zoukankan      html  css  js  c++  java
  • Tensorflow利用卷积神经网络实现图片分类

    tensorflow搭建卷积神经网络非常简单,我们使用卷积神经网络对fashion mnist数据集进行图片分类,首先导包:

    import tensorflow as tf
    from tensorflow import keras
    import matplotlib.pyplot as plt
    import numpy as np

    导入数据集:

    (train_image,train_label),(test_image,test_label)=tf.keras.datasets.fashion_mnist.load_data()

    查看图片的shape维度:

    train_image.shape

    输出:

    (60000, 28, 28)

    由于我们卷积神经网络需要的是四维的数据,也就是一共需要有四个维度,分别是(图片,横向像素,竖直方向的像素,channel)。

    这个数据集里面的图像均为三维的矩阵,且为黑白图片,因此channel为1,如果是RGB的彩色图片的话,channel为3.因此我们把三维的图片变成4维的图片,利用numpy即可:

    train_image=np.expand_dims(train_image,-1)
    test_image=np.expand_dims(test_image,-1)

    然后开始搭建卷积神经网络,我试了试自己的这个模型,做出来的结果甚至比Yun lekun提出的lenet5神经网络更好。搭建神经网络的架构如下:

    model.add(tf.keras.layers.Conv2D(32,(3,3),
                                     input_shape=train_image.shape[1:],
                                     activation="relu",
                                     padding="same"))
    #添加maxpooling层是因为在之后同样的卷积核能够提取的特征更多,增大“感受野”
    model.add(tf.keras.layers.MaxPool2D())
    model.add(tf.keras.layers.Conv2D(64,(3,3),activation="relu"))
    model.add(tf.keras.layers.GlobalAveragePooling2D())
    model.add(tf.keras.layers.Dense(10,activation='softmax'))

    编译模型:

    model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
                  loss="sparse_categorical_crossentropy",
                  metrics=['acc']
    )

    得到图像的分类结果,并绘制loss函数变化的图像,用来分析是否模型是否过拟合:

    plt.plot(history.epoch,history.history.get('loss'),label="loss")
    plt.plot(history.epoch,history.history.get('val_loss'),label="val_loss")
    plt.legend()

    得解。

  • 相关阅读:
    Mysql 免密码登录,修改密码及忘记密码操作
    CentOS 6.9 升级MySQL 5.6.36到5.7.18
    【转载】详解布隆过滤器的原理、使用场景和注意事项
    AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersion 区别
    为什么要有财务自由【转】
    CacheManager.Core
    雪花算法,生成分布式唯一ID
    监控
    什么是并行、并发, 两者的区别是什么
    Emit用法
  • 原文地址:https://www.cnblogs.com/geeksongs/p/13204511.html
Copyright © 2011-2022 走看看