卷积神经网络遮蔽层分为卷积层和池化层(pooling,积分新函数为函数f与g卷积

卷积神经互联网(convolutional neural network,CNN),权值分享(weight
sharing)互联网布局减弱模型复杂度,减弱权值数量,是语音深入分析、图像识别热门。无须人工特征提取、数据重新建立,直接把图纸作输入,自动提取特征,对活动、比例缩放、倾斜等图片变形具备惊人不改变形。卷积(convolution),泛函数深入分析积分转换数学方法,多个函数f和g生成第八个函数数学算子,表征函灵敏f与g翻转、平移重叠部分面积。f(x)、g(x)为路虎极光1八个可积函数。积分新函数为函数f与g卷积。∫-∞+∞f(τ)g(x-E)dτ。

学习笔记TF052:卷积网络,神经网络发展,亚历克斯Net的TensorFlow完结,tf052tensorflow

卷积神经互联网(convolutional neural network,CNN),权值共享(weight
sharing)互联网布局缩短模型复杂度,收缩权值数量,是语音分析、图像识别畅销。无须人工特征提取、数据重新建立,间接把图纸作输入,自动提取特征,对移动、比例缩放、倾斜等图片变形具备莫斯中国科学技术大学学不改变形。卷积(convolution),泛函数解析积分转换数学方法,多少个函数f和g生成第一个函数数学算子,表征函灵敏f与g翻转、平移重叠部分面积。f(x)、g(x)为R1五个可积函数。积分新函数为函数f与g卷积。∫-∞+∞f(τ)g(x-E)dτ。

神经互连网(neural
networks,NN)包罗输入层、掩盖层、输出层。卷积神经网络掩饰层分为卷积层和池化层(pooling
layer 下采集样品层)。卷积层的卷积核(conventional
kernel)在原有图像平移提取特征,种种特征是特色映射。池化层汇集特征荒芜参数收缩学习参数数量,收缩网络复杂度。最大值池化(max
pooling)、平均值池化(average
pooling)。卷积核提取特征映射动作padding,移动步长(Stride)不断定整除图像素宽度,越边边缘取样为SAME,不通过边缘取样为VALID。

Necognitron->LeCun->LeNet->AlexNet
->互联网加深:VGG16->VGG19
->巩固卷积层作用:NIN->谷歌Net->Incption V3 Incption V4
->
彼此结合ResNet
->分类任务到检查评定任务:KCNN->法斯特RCNN->法斯特er-CNN
->增添新功效模块:FCN->STNet->CNN+RM/LSTM
卷积神经互连网起源神经认识机(neocognitron)模型,出现卷积结构。第一个卷积神经互连网模型LeCun,一九八七年,发明人LeCun。杂谈
http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf。径向基函数(radial
basis function
RBF)。1998年,LeCun,LeNet。http://vision.stanford.edu/cs598\_spring07/papers/Lecun98.pdf。SVM
手工业设计特点分类器。ReLU,Dropout
,GPU,大数据,二零一三年历史性突破亚历克斯Net。

互联网加深。

LeNet。输入层32×32,图像预管理reshape,潜在鲜明特征出现在最高层特征监测卷积核中央。卷积层3个(C1、C3、C5),巩武威信号特征、裁减噪音,在线演示:
https://graphics.stanford.edu/courses/cs178/applets/convolution.html
分裂卷积核输出特征映射分化。降采集样品层2个(S2、S4),收缩互连网练习参数、模型过拟合程度,最大池化(max
pooling)选中区域最大值,平均值池化(mean
pooling)选中区域平均值。全连接层1个(F6),输入向量和权重向量点积加偏置,传给sigmoid函数,发生单元i状态。输出层(高斯连接),欧式径向基函数(Euclidean
radial basis
funtion)单元,拾一个品类对应13个通往基函数单元,各个单元八十多个输入,输出RBF单元计量输入向量和花色标志向量欧式距离,越远越大。

亚历克斯Net,二〇一三年,吉优ffrey Hintion及学生亚历克斯 Krizhevsky、Ilya
Sutskever,《ImageNet Classification with Deep Convolutional Neural
Networks》。分歧GPU管理图像的两样部分,仅在有个别层通讯。5个卷积层,3个全连接层,5000万个可调参数。最终全连接层输出到一千维softmax层,产生覆盖1000类标识布满。防止过拟合,Dropout
0.5可能率隐敝层神经元输出置0,分享权值,减弱互适应,收敛迭代次数增添一倍。数据增加(data
augmentation)变形(水平翻转图像、反射变化flip,原始图像随机平移调换crop,随机光照、彩色变换、颜色抖动)扩张新数据。非线性激活函数,ReLU,收敛速度比sigmoid/tanh快。大数目磨炼,120万ImageNet图像数据。GPU达成,直接从GPU内部存款和储蓄器读出、写入。LEnclaveN(local
response normalization)标准化层。

进步卷积层功能。

VGGNet,Karen simonyan、Andrew Zisserman 《Very Deep Convolutional
Networks for Large_Scale Visual
Recognition》http://www.robots.ox.ac.uk/~vgg/research/very\_deep/
。5个卷积组(8-16层)、2层全连接层图像特点,1层全连接分类特征。加深卷积层数到达无误率进步瓶颈。

GoogleNet。NIN(Network in Network)思想,Min Lin、Qiang Chen、Shuicheng
Yan论文《Network In Network》https://arxiv.org/abs/1312.4400
。线性卷积层(linear convolution layer)变多层感知卷积层(multilayer
perceptron),全连接层改为全局平均池化。二〇一六年 谷歌(Google)Net(英斯ption
V1),Christian Szegedy、Wei Liu散文《Going Deeper with
Convolutions》https://arxiv.org/abs/1409.4842
。使用1×1卷积核降维,在全连接层连接1×1、3×3、5×5卷积结果。宽度、深度扩大,加速。层数越来越深,22层,差异深度扩充两上损失函数幸免反向传播梯度消失。扩张二种轻重缓急卷积核,降维英斯ption模型,1×1卷积核减弱特征映射厚度。

构成网络加深和进步卷积模块功用。

ResNet。2014年,ILSVRC不借助外部数据物体检测、物体识别项目亚军,MSRA
何凯明,152层。ImageNet
分类、检验、定位、COCO数据集检验(deteciton)、分隔(segmentation)季军。Kaiming
He、Xiangyu Zhang、Shaoqing Ren、Jian Sun《Deep Residual Learning for
Image Recognition》 https://arxiv.org/abs/1512.03385 。互联网退化(network
degradation),shortcut结构,输入跳层传递加卷积结果。残差(residual),复杂非线性映射H(x)预测图片分类,残差函数(residual
function)F(x)=H(x)-x,优化残差映射比直接优化H(x)简要。

从分类职务到检查测验职责。图片指标检验,摄像指标检查实验(VID)。

凯雷德-CNN,Region Proposal
Networks(RPN)和CNN结合。RPNs,自便尺寸图片一多种带识别物体几率分数提出区域。使用小互联网在最后卷积特征映射滑动扫描,滑动互联网每趟与性情映射窗口全连接,映射到低维向量,送入八个全连接层(box回归层box-regression
layer和box分类层box-classification
layer)。重复计算,几千个建议区域(region)相互重叠,数十次重复提取性子。
法斯特大切诺基-CNN,加快版本,最后提议区域映射CNN最终卷积层特征映射,一张图纸只领到三次特征,提升速度,瓶颈在RPN,支持多类物体同期检查实验,行人车辆检查测量试验手艺。
Fater-兰德汉兰达-CNN,RPN交给CNN做,达到实时。Shaoqing Ren、Kaiming He、RossGirshick、Jian Sun随想《法斯特er 奥迪Q5-CNN:Towards Real-Time Object Detection
with Region Proposal Networks》 https://arxiv.org/abs/1506.01497

日增新成效模块。

FCN(反卷积)、STNet、CNN与HighlanderNN/LSTM混合结构。

MNIST 亚历克斯Net完毕。网络布局图。
1、稳重研读互连网舆论,驾驭每一层输入、输出值、互联网布局。
2、根据加载数据、定义网络模型、演习模型、评估模型步骤达成互连网。

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3\_NeuralNetworks/convolutional\_network.py

https://github.com/tensorflow/models/blob/master/tutorials/image/alexnet/alexnet\_benchmark.py

#!/usr/bin/python
# -*- coding:utf8 -*-
# 输入数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(“/tmp/data/”, one_hot=True)
import tensorflow as tf
# 定义网络超参数
learning_rate = 0.001
training_iters = 20000
batch_size = 128
display_step = 10
# 定义互连网参数
n_input = 784 # 输入的维度(img shape:28×28)
n_classes = 10 # 标志的维度(0-9 digits)
dropout = 0.75 # Dropout 的可能率,输出或许性
# 占位符输入
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_classes])
keep_prob = tf.placeholder(tf.float32) #dropout
# 卷积操作
def conv2d(name, x, W, b,strides=1):
x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1],
padding=’SAME’)
x = tf.nn.bias_add(x, b)
return tf.nn.relu(x, name=name) #用relu激活函数
# 最大下采集样品操作
def maxpool2d(name, x, k=2):
return tf.nn.max_pool(x, ksize=[1, k, k, 1], strides=[1, k, k, 1],
padding=’SAME’, name=name)
# 标准化操作
def norm(name, l_input, lsize=4):
return tf.nn.lrn(l_input, lsize, bias=1.0, alpha=0.001 / 9.0,
beta=0.75, name=name)
# 全数的网络参数
weights = {
‘wc1’: tf.Variable(tf.random_normal([11, 11, 1, 96])),
‘wc2’: tf.Variable(tf.random_normal([5, 5, 96, 256])),
‘wc3’: tf.Variable(tf.random_normal([3, 3, 256, 384])),
‘wc4’: tf.Variable(tf.random_normal([3, 3, 384, 384])),
‘wc5’: tf.Variable(tf.random_normal([3, 3, 384, 256])),
‘wd1’: tf.Variable(tf.random_normal([4*4*256, 4096])),
‘wd2’: tf.Variable(tf.random_normal([4096, 4096])),
‘out’: tf.Variable(tf.random_normal([4096, 10]))
}
biases = {
‘bc1’: tf.Variable(tf.random_normal([96])),
‘bc2’: tf.Variable(tf.random_normal([256])),
‘bc3’: tf.Variable(tf.random_normal([384])),
‘bc4’: tf.Variable(tf.random_normal([384])),
‘bc5’: tf.Variable(tf.random_normal([256])),
‘bd1’: tf.Variable(tf.random_normal([4096])),
‘bd2’: tf.Variable(tf.random_normal([4096])),
‘out’: tf.Variable(tf.random_normal([n_classes]))
}
# 定义亚历克斯Net互连网模型
def alex_net(x, weights, biases, dropout):
# 向量转为矩阵
x = tf.reshape(x, shape=[-1, 28, 28, 1])
# 第一卷积层
# 卷积
conv1 = conv2d(‘conv1’, x, weights[‘wc1’], biases[‘bc1’])
# 最大池化(向下采集样品)
pool1 = max_pool(‘pool1’, conv1, k=2)
# 规范化(归一化)
norm1 = norm(‘norm1’, pool1, lsize=4)
# 第二卷积层
# 卷积
conv2 = conv2d(‘conv2’, conv1, weights[‘wc2’], biases[‘bc2’])
# 最大池化(向下采集样品)
pool2 = max_pool(‘pool2’, conv2, k=2)
# 规范化(归一化)
norm2 = norm(‘norm2’, pool2, lsize=4)
# 第三卷积层
# 卷积
conv3 = conv2d(‘conv3’, conv2, weights[‘wc3’], biases[‘bc3’])
# 最大池化(向下采集样品)
pool3 = max_pool(‘pool3’, conv3, k=2)
# 规范化(归一化)
norm3 = norm(‘norm3’, pool3, lsize=4)
# 第四卷积层
conv4 = conv2d(‘conv4’, conv3, weights[‘wc4’], biases[‘bc4’])
# 最大池化(向下采样)
pool4 = max_pool(‘pool4’, conv4, k=2)
# 规范化(归一化)
norm4 = norm(‘norm4’, pool4, lsize=4)
# 第五卷积层
conv5 = conv2d(‘conv5’, conv4, weights[‘wc5’], biases[‘bc5’])
# 最大池化(向下采集样品)
pool5 = max_pool(‘pool5’, conv4, k=2)
# 规范化(归一化)
norm5 = norm(‘norm5’, pool5, lsize=4)
# 第一全连接层,先把特征图转为向量
fc1 = tf.reshape(norm5, [-1,
weights[‘wd1’].get_shape().as_list()[0]])
fc1 = tf.add(tf.matmul(fc1, weights[‘wd1’]), biases[‘bd1’])
fc1 = tf.nn.relu(fc1)
# Dropout
fc1 = tf.nn.dropout(fc1, dropout)
# 第二全连接层
fc2 = tf.reshape(fc1, [-1,
weights[‘wd1’].get_shape().as_list()[0]])
fc2 = tf.add(tf.matmul(fc2, weights[‘wd1’]), biases[‘bd1’])
fc2 = tf.nn.relu(fc2)
# Dropout
fc2 = tf.nn.dropout(fc2, dropout)
# 网络输出层
out = tf.add(tf.matmul(fc2, weights[‘out’]), biases[‘out’])
return out
# 营造立模型型
pred = alex_net(x, weights, biases, keep_prob)
# 定义损失函数、优化器(学习步长)
cost =
tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,
labels=y))
optimizer =
tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
# 评估函数
correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
# 陶冶模型和评估模型
# 早先化全体的分享变量
init = tf.global_variables_initializer()
# 开启八个教练
with tf.Session() as sess:
sess.run(init)
step = 1
# 开首练习,直到到达training_iters,即200000
while step * batch_size < training_iters:
# 获取批数量
batch_x, batch_y = mnist.train.next_batch(batch_size)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y, keep_prob:
dropout})
if step % display_step == 0:
# 总计损失值和正确度,输出
loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x, y:
batch_y, keep_prob: 1.})
print “Iter ” + str(step*batch_size) + “, Minibatch Loss= ” +
“{:.6f}”.format(loss) + “, Training Accuracy= ” + “{:.5f}”.format(acc)
step += 1
print “Optimization Finished!”
# 计算测量检验精度
print “Testing Accuracy:”, sess.run(accuracy, feed_dict={x:
mnist.test.images[:256], y: mnist.test.labels[:256], keep_prob:
1.})

参谋资料:
《TensorFlow本领分析与实战》

接待推荐香港(Hong Kong)机械学习职业机会,作者的微信:qingxingfengzi

http://www.bkjia.com/Pythonjc/1231434.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1231434.htmlTechArticle学习笔记TF052:卷积网络,神经网络发展,AlexNet的TensorFlow实现,tf052tensorflow
卷积神经互联网(convolutional neural network,CNN),权值分享(weight
sharin…

神经网络(neural
networks,NN)包罗输入层、掩饰层、输出层。卷积神经网络掩饰层分为卷积层和池化层(pooling
layer 下采集样品层)。卷积层的卷积核(conventional
kernel)在原本图像平移提取特征,每一个特征是特色映射。池化层集聚特征荒芜参数减少学习参数数量,缩短互连网复杂度。最大值池化(max
pooling)、平均值池化(average
pooling)。卷积核提取特征映射动作padding,移动步长(Stride)不必然整除图像素宽度,越边边缘取样为SAME,不通过边缘取样为VALID。

Necognitron->LeCun->LeNet->AlexNet
->网络加深:VGG16->VGG19
->巩固卷积层作用:NIN->GoogleNet->Incption V3 Incption V4
->
两岸结合ResNet
->分类职责到检验职责:KCNN->FastRCNN->法斯特er-CNN
->扩展新成效模块:FCN->STNet->CNN+RM/LSTM
卷积神经互联网源点神经认识机(neocognitron)模型,出现卷积结构。第二个卷积神经互连网模型LeCun,1987年,发明人LeCun。杂文
http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf。径向基函数(radial
basis function
RBF)。1998年,LeCun,LeNet。http://vision.stanford.edu/cs598\_spring07/papers/Lecun98.pdf。SVM
手工业设计特点分类器。ReLU,Dropout
,GPU,大数目,二〇一三年历史性突破亚历克斯Net。

互连网加深。

LeNet。输入层32×32,图像预处理reshape,潜在分明特点出现在最高层特征监测卷积核焦点。卷积层3个(C1、C3、C5),加强原非确定性信号特征、减少噪声,在线演示:
https://graphics.stanford.edu/courses/cs178/applets/convolution.html
区别卷积核输出特征映射差异。降采集样品层2个(S2、S4),收缩互连网练习参数、模型过拟合程度,最大池化(max
pooling)选中区域最大值,平均值池化(mean
pooling)选中区域平均值。全连接层1个(F6),输入向量和权重向量点积加偏置,传给sigmoid函数,产生单元i状态。输出层(高斯连接),欧式径向基函数(Euclidean
radial basis
funtion)单元,拾贰个类型对应十三个通往基函数单元,每种单元八十一个输入,输出RBF单元计量输入向量和项指标志向量欧式距离,越远越大。

亚历克斯Net,2011年,吉优ffrey Hintion及学生Alex Krizhevsky、Ilya
Sutskever,《ImageNet Classification with Deep Convolutional Neural
Networks》。差异GPU管理图像的例外界分,仅在有些层通讯。5个卷积层,3个全连接层,四千万个可调参数。最终全连接层输出到一千维softmax层,发生覆盖一千类标识遍布。幸免过拟合,Dropout
0.5概率隐敝层神经元输出置0,分享权值,缩短互适应,收敛迭代次数扩展一倍。数据拉长(data
augmentation)变形(水平翻转图像、反射变化flip,原始图像随机平移转变crop,随机光照、彩色调换、颜色抖动)扩大新数据。非线性激活函数,ReLU,收敛速度比sigmoid/tanh快。大数量陶冶,120万ImageNet图像数据。GPU实现,直接从GPU内部存款和储蓄器读出、写入。LXC60N(local
response normalization)标准化层。

抓实卷积层功能。

VGGNet,Karen simonyan、Andrew Zisserman 《Very Deep Convolutional
Networks for Large_Scale Visual
Recognition》http://www.robots.ox.ac.uk/~vgg/research/very\_deep/
。5个卷积组(8-16层)、2层全连接层图像特点,1层全连接分类特征。加深卷积层数达到准确率进步瓶颈。

GoogleNet。NIN(Network in Network)思想,Min Lin、Qiang Chen、Shuicheng
Yan论文《Network In Network》https://arxiv.org/abs/1312.4400
。线性卷积层(linear convolution layer)变多层感知卷积层(multilayer
perceptron),全连接层改为大局平均池化。二零一六年 谷歌Net(英斯ption
V1),Christian Szegedy、Wei Liu杂谈《Going Deeper with
Convolutions》https://arxiv.org/abs/1409.4842
。使用1×1卷积核降维,在全连接层连接1×1、3×3、5×5卷积结果。宽度、深度扩张,加快。层数更加深,22层,分化深度扩张两上损失函数防止反向传来梯度消失。增扩充样轻重缓急卷积核,降维英斯ption模型,1×1卷积核收缩特征映射厚度。

构成互连网加深和抓好卷积模块功用。

ResNet。2014年,ILSVRC不重视外界数据物体格检查测、物体识别项目季军,MSRA
何凯明,152层。ImageNet
分类、检验、定位、COCO数据集检查测量试验(deteciton)、分隔(segmentation)亚军。Kaiming
He、Xiangyu Zhang、Shaoqing Ren、Jian Sun《Deep Residual Learning for
Image Recognition》 https://arxiv.org/abs/1512.03385 。互连网退化(network
degradation),shortcut结构,输入跳层传递加卷积结果。残差(residual),复杂非线性映射H(x)预测图片分类,残差函数(residual
function)F(x)=H(x)-x,优化残差映射比一贯优化H(x)大致。

从分类职分到检查测量检验职责。图片指标检验,录制指标检查测试(VID)。

汉兰达-CNN,Region Proposal
Networks(RPN)和CNN结合。RPNs,任性尺寸图片一文山会海带识别物体可能率分数提出区域。使用小网络在结尾卷积特征映射滑动扫描,滑动网络每便与特征映射窗口全连接,映射到低维向量,送入多少个全连接层(box回归层box-regression
layer和box分类层box-classification
layer)。重复计算,几千个建议区域(region)相互重叠,多次重复提取性情。
FastEvoque-CNN,加速版本,最后建议区域映射CNN最终卷积层特征映射,一张图纸只领到一回特征,提升速度,瓶颈在RPN,援助多类物体同有时间检测,行人车辆检查实验手艺。
Fater-翼虎-CNN,RPN交给CNN做,达到实时。Shaoqing Ren、Kaiming He、罗斯尔Girshick、Jian Sun杂文《法斯特er 科雷傲-CNN:Towards Real-Time Object Detection
with Region Proposal Networks》 https://arxiv.org/abs/1506.01497

充实新成效模块。

FCN(反卷积)、STNet、CNN与RAV4NN/LSTM混合结构。

MNIST 亚历克斯Net达成。网络布局图。
1、稳重研读互连网舆论,精晓每一层输入、输出值、互连网布局。
2、依据加载数据、定义网络模型、练习模型、评估模型步骤完结互连网。

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3\_NeuralNetworks/convolutional\_network.py

https://github.com/tensorflow/models/blob/master/tutorials/image/alexnet/alexnet\_benchmark.py

#!/usr/bin/python
# -*- coding:utf8 -*-
# 输入数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(“/tmp/data/”, one_hot=True)
import tensorflow as tf
# 定义网络超参数
learning_rate = 0.001
training_iters = 20000
batch_size = 128
display_step = 10
# 定义网络参数
n_input = 784 # 输入的维度(img shape:28×28)
n_classes = 10 # 标识的维度(0-9 digits)
dropout = 0.75 # Dropout 的概率,输出恐怕性
# 占位符输入
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_classes])
keep_prob = tf.placeholder(tf.float32) #dropout
# 卷积操作
def conv2d(name, x, W, b,strides=1):
x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1],
padding=’SAME’)
x = tf.nn.bias_add(x, b)
return tf.nn.relu(x, name=name) #用relu激活函数
# 最大下采集样品操作
def maxpool2d(name, x, k=2):
return tf.nn.max_pool(x, ksize=[1, k, k, 1], strides=[1, k, k, 1],
padding=’SAME’, name=name)
# 标准化操作
def norm(name, l_input, lsize=4):
return tf.nn.lrn(l_input, lsize, bias=1.0, alpha=0.001 / 9.0,
beta=0.75, name=name)
# 全部的网络参数
weights = {
‘wc1’: tf.Variable(tf.random_normal([11, 11, 1, 96])),
‘wc2’: tf.Variable(tf.random_normal([5, 5, 96, 256])),
‘wc3’: tf.Variable(tf.random_normal([3, 3, 256, 384])),
‘wc4’: tf.Variable(tf.random_normal([3, 3, 384, 384])),
‘wc5’: tf.Variable(tf.random_normal([3, 3, 384, 256])),
‘wd1’: tf.Variable(tf.random_normal([4*4*256, 4096])),
‘wd2’: tf.Variable(tf.random_normal([4096, 4096])),
‘out’: tf.Variable(tf.random_normal([4096, 10]))
}
biases = {
‘bc1’: tf.Variable(tf.random_normal([96])),
‘bc2’: tf.Variable(tf.random_normal([256])),
‘bc3’: tf.Variable(tf.random_normal([384])),
‘bc4’: tf.Variable(tf.random_normal([384])),
‘bc5’: tf.Variable(tf.random_normal([256])),
‘bd1’: tf.Variable(tf.random_normal([4096])),
‘bd2’: tf.Variable(tf.random_normal([4096])),
‘out’: tf.Variable(tf.random_normal([n_classes]))
}
# 定义亚历克斯Net网络模型
def alex_net(x, weights, biases, dropout):
# 向量转为矩阵
x = tf.reshape(x, shape=[-1, 28, 28, 1])
# 第一卷积层
# 卷积
conv1 = conv2d(‘conv1’, x, weights[‘wc1’], biases[‘bc1’])
# 最大池化(向下采集样品)
pool1 = max_pool(‘pool1’, conv1, k=2)
# 规范化(归一化)
norm1 = norm(‘norm1’, pool1, lsize=4)
# 第二卷积层
# 卷积
conv2 = conv2d(‘conv2’, conv1, weights[‘wc2’], biases[‘bc2’])
# 最大池化(向下采集样品)
pool2 = max_pool(‘pool2’, conv2, k=2)
# 规范化(归一化)
norm2 = norm(‘norm2’, pool2, lsize=4)
# 第三卷积层
# 卷积
conv3 = conv2d(‘conv3’, conv2, weights[‘wc3’], biases[‘bc3’])
# 最大池化(向下采集样品)
pool3 = max_pool(‘pool3’, conv3, k=2)
# 规范化(归一化)
norm3 = norm(‘norm3’, pool3, lsize=4)
# 第四卷积层
conv4 = conv2d(‘conv4’, conv3, weights[‘wc4’], biases[‘bc4’])
# 最大池化(向下采集样品)
pool4 = max_pool(‘pool4’, conv4, k=2)
# 规范化(归一化)
norm4 = norm(‘norm4’, pool4, lsize=4)
# 第五卷积层
conv5 = conv2d(‘conv5’, conv4, weights[‘wc5’], biases[‘bc5’])
# 最大池化(向下采样)
pool5 = max_pool(‘pool5’, conv4, k=2)
# 规范化(归一化)
norm5 = norm(‘norm5’, pool5, lsize=4)
# 第一全连接层,先把特征图转为向量
fc1 = tf.reshape(norm5, [-1,
weights[‘wd1’].get_shape().as_list()[0]])
fc1 = tf.add(tf.matmul(fc1, weights[‘wd1’]), biases[‘bd1’])
fc1 = tf.nn.relu(fc1)
# Dropout
fc1 = tf.nn.dropout(fc1, dropout)
# 第二全连接层
fc2 = tf.reshape(fc1, [-1,
weights[‘wd1’].get_shape().as_list()[0]])
fc2 = tf.add(tf.matmul(fc2, weights[‘wd1’]), biases[‘bd1’])
fc2 = tf.nn.relu(fc2)
# Dropout
fc2 = tf.nn.dropout(fc2, dropout)
# 网络输出层
out = tf.add(tf.matmul(fc2, weights[‘out’]), biases[‘out’])
return out
# 创设立模型型
pred = alex_net(x, weights, biases, keep_prob)
# 定义损失函数、优化器(学习步长)
cost =
tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,
labels=y))
optimizer =
tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
# 评估函数
correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
# 练习模型和评估模型
# 早先化全部的分享变量
init = tf.global_variables_initializer()
# 开启三个陶冶
with tf.Session() as sess:
sess.run(init)
step = 1
# 起头练习,直到达到training_iters,即200000
while step * batch_size < training_iters:
# 获取批数量
batch_x, batch_y = mnist.train.next_batch(batch_size)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y, keep_prob:
dropout})
if step % display_step == 0:
# 计算损失值和正确度,输出
loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x, y:
batch_y, keep_prob: 1.})
print “Iter ” + str(step*batch_size) + “, Minibatch Loss= ” +
“{:.6f}”.format(loss) + “, Training Accuracy= ” + “{:.5f}”.format(acc)
step += 1
print “Optimization Finished!”
# 计算测验精度
print “Testing Accuracy:”, sess.run(accuracy, feed_dict={x:
mnist.test.images[:256], y: mnist.test.labels[:256], keep_prob:
1.})

参照他事他说加以考察资料:
《TensorFlow本事分析与实战》

迎接推荐东京机械学习专门的学业机遇,小编的微信:qingxingfengzi

相关文章