概述
卷积神经网络
主要应用于计算机视觉相关任务,但它能处理的任务并不局限于图像,其实语音识别也是可以使用卷积神经网络。
工作概述
卷积层 conv2d
参数:ksize 卷积核大小 strides 卷积核移动跨度 padding 边缘填充
非线性层 relu/sigmiod/tanh
池化(下采样)层 pooling2d
- 最大池化
2.平均池化
全连接层 Dense:w*x+b
卷积
卷积是指将卷积应用到某个张量的所有点上,通过将卷积核在输入的张量上滑动而生成经过滤波处理的张量。
卷积完成的是对图像特征的提取或者说信息匹配,当一个包含某些特征的图像经过一个卷积核时,一些卷积核被激活,输出特定信号。
整体结构
一句话概括:把图像变小(减小维度)变厚(特征提取)
卷积神经网络需要四维的图片数据(数量,宽度,高度,通道数)
示例:
import tensorflow as tf
print('Tensorflow version:{}'.format(tf.__version__))
# 测试gpu是否可以使用
tf.test.is_gpu_available()
from tensorflow import keras
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
# 加载fashion_mnist数据集
fashion_mnist = keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data()
# 对图片数据进行扩维
train_images = np.expand_dims(train_images,-1) # 在最后一个维度上进行扩张
test_images = np.expand_dims(test_images,-1) # 在最后一个维度上进行扩张
建立模型
model= tf.keras.Sequential() # 顺序模型
# 第一层使用卷积层,卷积层提取图片特征的能力强 32-fliter个数 (3,3)-卷积核大小,一般使用3*3或5*5 input_shape-图片大小
model.add(tf.keras.layers.Conv2D(64,(3,3),input_shape=train_images.shape[1:],activation='relu',padding='same'))
model.add(tf.keras.layers.Conv2D(64,(3,3),activation='relu',padding='same'))
# 最大池化层
model.add(tf.keras.layers.MaxPool2D())
# 抑制过拟合
model.add(tf.keras.layers.Dropout(0.5))
# 卷积核以2的指数增长
model.add(tf.keras.layers.Conv2D(128,(3,3),activation='relu',padding='same'))
model.add(tf.keras.layers.Conv2D(128,(3,3),activation='relu',padding='same'))
# 最大池化层
model.add(tf.keras.layers.MaxPool2D())
# 抑制过拟合
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Conv2D(256,(3,3),activation='relu',padding='same'))
model.add(tf.keras.layers.Conv2D(256,(3,3),activation='relu',padding='same'))
# 抑制过拟合
model.add(tf.keras.layers.Dropout(0.5))
# 全局平均池化:得到一个二维的数据
model.add(tf.keras.layers.GlobalAveragePooling2D())
# Dense 输出层:输出一个维度为10的数据 softmax:输出概率值
model.add(tf.keras.layers.Dense(256,activation='relu'))
model.add(tf.keras.layers.Dense(10,activation='softmax'))
model.summary()
# 对模型进行配置
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['acc'])
# 训练
history = model.fit(train_images,train_labels,epochs=30,validation_data = (test_images,test_labels))
history.history.keys()
plt.plot(history.epoch,history.history.get('acc'),label='acc')
plt.plot(history.epoch,history.history.get('val_acc'),label='val_acc')
plt.legend()
plt.plot(history.epoch,history.history.get('loss'),label='loss')
plt.plot(history.epoch,history.history.get('val_loss'),label='val_loss')
plt.legend()
最后
以上就是想人陪麦片为你收集整理的Tensorflow——卷积神经网络(CNN)卷积神经网络卷积整体结构示例:的全部内容,希望文章能够帮你解决Tensorflow——卷积神经网络(CNN)卷积神经网络卷积整体结构示例:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复