tensorflow学习——03 卷积
Fashion MNIST的数据集都是灰度图像,并且图像都在正中间
如果让Fashion MNIST训练的神经网络模型去判断一张图片,其中的鞋子并不是在正中间,那么判断的准确率就不是很好了
CNN:卷积神经网络
识别物品的特征
不同的过滤器会产生不同的效果
每次卷积之后还要进行一个max Pooling(最大值池化),作用是增强图像特征
取一个2*2的区域,把最大值留下
池化与卷积的不同是:池化作用域不重合区域
经过max pooling 500*500的变成了250*250,这是因为一个2*2的区域只保留一个最大值
关于卷积神经网络可以看下面图片中的材料
卷积神经网络是在全连接神经网络上增加四层
import tensorflow as tf from tensorflow import keras fashion_mnist=keras.datasets.fashion_mnist (train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data() #第一层是两维的卷积层 64指过滤器(filter)有64个,每个过滤器是3*3像素;激活函数relu;输入值是28*28*1,表明只有灰度值 #第二层 卷积之后使用maxPooling增强图像特征 使用2*2区域 原来的输出会少一半 #第三层也是卷积层和第一层一样 #第四层和第二层也一样 并且不用再指定输入的shape model=keras.Sequential() model.add(keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1))) model.add(keras.layers.MaxPooling2D(2,2)) model.add(keras.layers.Conv2D(64,(3,3),activation='relu')) model.add(keras.layers.MaxPooling2D(2,2)) model.add(keras.layers.Flatten()) model.add(keras.layers.Dense(128,activation=tf.nn.relu)) model.add(keras.layers.Dense(10,activation=tf.nn.softmax)) train_images = train_images.reshape((60000, 28, 28, 1)) train_images_scaled=train_images/255 model.compile(optimizer=tf.optimizers.Adam(),loss=tf.losses.sparse_categorical_crossentropy,metrics=['accuracy']) model.fit(train_images_scaled,train_labels,epochs=5)
模型的网络结构
model.summary()
out_shape
第一层:原先输入是28*28,卷积之后去掉两个像素变成26*26 64指64个过滤器
经过第一层卷积之后,一张图片变成了64张图片
第二层:池化之后 长宽减半 13*13
第三层:卷积,长宽-2 成11*11
第四层:池化减半 5*5
第五层:Flatten把所有展平,5*5*64=1600个神经元,
param
第一层:过滤器是3*3 所以(3*3+1)*64=640 1是一个bias
第二层没有调整参数
第三层:(3*3*64+1)*64=36928
import matplotlib.pyplot as plt layer_outputs=[layer.output for layer in model.layers] #读取model的每一层 activation_model=tf.keras.models.Model(inputs=model.input,outputs=layer_outputs) #input和输出层放在一起构成一个对象 pred=activation_model.predict(test_images[0].reshape(1,28,28,1)) #用上面的独享预测图片 print(len(pred))#输出为7 说明是7个层的输出 #print(pred) #之前用64个过滤器 不同的过滤器提取不同的特征 print(pred[0].shape) #(1,26,26,64) 这个是第一层的输出结果的shape plt.imshow(pred[0][0,:,:,1]) #这个是第一层的第二个过滤器产生的结果图像
有的过滤器可能是对鞋子的底面,有的可能就是对鞋子的鞋面产生明显效果
作者:孙建钊
出处:http://www.cnblogs.com/sunjianzhao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。