TensorFlow—part3

TensorFlow—part3

基于中国大学生MOOC视频TensorFlow入门实操课程第三章卷积神经元网络(CNN),以及自己遇到的一些问题
慕课视频链接:https://www.icourse163.org/learn/youdao-1460578162?tid=1461280442#/learn/announce



前言

我理解的卷积神经元网络作用就是对使用过滤器图片进行特征化处理,使某种特征明显,使用MaxPooling增强特性,减少数据。在实际中不是所有图片都在图片正中间,会存在便宜旋转,会影响模型的准确性。


一、辅助理解

卷积(Convolution)

在这里插入图片描述
计算过程;原像素和过滤器对应位置相乘再相加,过滤器在原图片上不断进行移动卷积。过滤器大小和原图片大小不一定匹配,可能卷积后的输出会丢失像素。不同过滤器会有不同效果,留下的特征也不相同。

MaxPooling
在这里插入图片描述
计算过程:取2*2,再去其中最大值。作用:增强图像特征,减少数据。

二、课程代码

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

#####lesson3卷积神经元网络

fashion_mnist =keras.datasets.fashion_mnist
(train_images,train_lables),(test_images,test_lables) = fashion_mnist.load_data()

#lesson3_2
model = keras.Sequential([
    keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1)), #64个3*3过滤器,输入值28*28应该通道灰度值
    keras.layers.MaxPooling2D(2,2),     #MaxPooling增强特征,减少数据
    keras.layers.Conv2D(64,(3,3),activation='relu'),
    keras.layers.MaxPooling2D(2,2),
    keras.layers.Flatten(),
    keras.layers.Dense(128,activation=tf.nn.relu),
    keras.layers.Dense(10,activation=tf.nn.softmax)
])
train_images_scaled = train_images/255
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics='accuracy')
model.fit(train_images_scaled.reshape(-1,28,28,1),train_lables,epochs=5)
#和第二章的时候也碰到了,不过这次直接使用train_images_scaled.reshape(-1,28,28,1)来重建

#lesson3_3
model.summary()
#_________________________________________________________________
#Layer (type)                 Output Shape              Param #
#=================================================================
#conv2d (Conv2D)              (None, 26, 26, 64)        640         #过滤器长宽各去掉了2个像素,64个过滤器,param=(3*3+1)*64
#_________________________________________________________________
#max_pooling2d (MaxPooling2D) (None, 13, 13, 64)        0           #缩减为原来的1/4,长宽都变为原来的一半
#_________________________________________________________________
#conv2d_1 (Conv2D)            (None, 11, 11, 64)        36928       #过滤器长宽各去掉了2个像素,param=3*3*64+1)*64
#_________________________________________________________________
#_________________________________________________________________
#max_pooling2d_1 (MaxPooling2 (None, 5, 5, 64)          0
#_________________________________________________________________
#flatten (Flatten)            (None, 1600)              0           #5*5*64=1600
#_________________________________________________________________
#dense (Dense)                (None, 128)               204928
#_________________________________________________________________
#dense_1 (Dense)              (None, 10)                1290
#=================================================================

layers_outputs = [keras.layers.output for layer in model.layers]
activation_model = keras.models.Model(inputs = model.input,outputs = layers_outputs)
pred = activation_model.predict(train_images[0].reshape( 1, 28, 28, 1))
#print(pred)
#print(pred[0].shape)
#pred[x][0,:,:,y]   x代表层数下标,第一个:代表所有行,第二个:代表所有列,y代表过滤器下标
#plt.imshow(pred[0][0,:,:,2])
#plt.show()

本次环境为pycharm

总结

这部分内容还是比较简单的,视频也讲的很形象生动,还是要继续冲!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值