zoukankan      html  css  js  c++  java
  • 神经网络和keras

    一、图片基础和keras介绍

    1、图片三要素

    2、keras常用api

    3、keras读取图片

    使用image前需安装pillow

    pip install Pillow
    from tensorflow.python.keras.preprocessing.image import load_img, img_to_array
    
    
    def main():
        img = load_img("./images/img01.jpg", target_size=[300,300])
        img = img_to_array(img)
        print(img)
    
    if __name__ == "__main__":
        main()

    4、NHWC和NCHW

     

     

    二、神经网络基础

    1、神经网络

     

    2、创建神经网络模型

     

     #创建神经网络模型
        model = Sequential([
            Flatten(input_shape=(28,28)),
            Dense(128,activation=tf.nn.relu),
            Dense(10,activation=tf.nn.softmax)
        ])

    model的一些属性

     

    3、模型的训练和评估

    1)compile

    loss:

    2)fit

    3)evaluate

    4、案例:实现多层神经网络进行时装分类

    import tensorflow as tf
    from tensorflow.python import keras
    from tensorflow.python.keras import Sequential
    from tensorflow.python.keras.layers import Flatten, Dense
    import os
    import numpy as np
    
    class SingleNN(object):
    
        #神经网络模型
        model = Sequential([
            Flatten(input_shape=(28,28)),
            Dense(128,activation=tf.nn.relu),
            Dense(10,activation=tf.nn.softmax)
        ])
    
        #初始化获取数据集
        def __init__(self):
            (self.x_train, self.y_train), (self.x_test, self.y_test) = keras.datasets.fashion_mnist.load_data()
            #进行数据归一化
            self.x_train = self.x_train / 255.0
            self.x_test = self.x_test / 255.0
    
    
        #编译模型优化器
        def singlenn_compile(self):
            SingleNN.model.compile(
                optimizer=keras.optimizers.SGD(lr=0.01), #优化器
                loss= keras.losses.sparse_categorical_crossentropy, #损失函数 数据非one-hot编码
                metrics=['accuracy']
            )
            return None
    
        #训练模型
        def singlenn_fit(self):
            #fit当中添加回调函数,记录训练模型过程
            modelcheck = keras.callbacks.ModelCheckpoint(
                filepath="./ckpt/singlenn_{epoch:02d}-{val_acc:.2f}.h5",
                monitor='val_acc', #保存损失率还是准确率
                save_weights_only=True,
                mode='auto',
                period=1
            )
    
            #添加tensorboard观察
            tensorboard = keras.callbacks.TensorBoard(
                log_dir="./graph",
                histogram_freq=1,
                write_grads=True,
                write_images=True
            )
    
            SingleNN.model.fit(self.x_train, self.y_train, epochs=1, batch_size=128, callbacks=[modelcheck, tensorboard]) #epochs迭代次数,batch_size每次迭代选择的样本
            return None
    
        #评估模型
        def single_evalute(self):
            test_loss, test_acc = SingleNN.model.evaluate(self.x_test, self.y_test) #返回损失率和精确率
            print(test_loss,test_acc)
            return None
    
        #用保存的模型预测
        def single_predict(self):
            if os.path.exists("./tmp/ckpt/checkpoint"):
                SingleNN.model.load_weights("./tmp/ckpt/SingleNN.h5")
                return SingleNN.model.predict(self.x_test)
    
    
    if __name__ == '__main__':
        singlenn = SingleNN()
        # singlenn.singlenn_compile()
        # singlenn.singlenn_fit()
        # singlenn.single_evalute()
    
        # #保存模型
        # SingleNN.model.save_weights("./tmp/ckpt/SingleNN.h5")
    
        #使用模型预测
        predictions = singlenn.single_predict()
        print(predictions)
        print(np.argmax(predictions,axis=1))
  • 相关阅读:
    arpg网页游戏之地图(四)
    arpg网页游戏之地图(三)
    arpg网页游戏之地图(二)
    arpg网页游戏之地图(一)
    cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。
    盖茨的几点忠告【转】
    桌面快捷方式图标都有一个蓝色的阴影
    人际关系百条细节
    需求分析的六个原则
    小细节,你做到了么?
  • 原文地址:https://www.cnblogs.com/dominik/p/13799187.html
Copyright © 2011-2022 走看看