积分新函数为函数f与g卷积,积分新函数为函数f与g卷积

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层全连接分类特征。加深卷积层数达到准确率进步瓶颈。

整合网络加深和提升卷积模块成效。

读书笔记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->法斯特(Fast)RCNN->法斯特er-CNN
->扩张新功用模块:FCN->STNet->CNN+RM/LSTM
卷积神经网络源点神经认知机(neocognitron)模型,出现卷积结构。第二个卷积神经网络模型LeCun,1989年,发明人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,大数目,二〇一二年历史性突破亚历·克斯(Ale·x)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)单元,10个门类对应10个通往基函数单元,每个单元84个输入,输出RBF单元计量输入向量和项目标记向量欧式距离,越远越大。

亚历·克斯(Ale·x)Net,二零一二年,杰弗里 Hintion及学生亚历克斯 Krizhevsky、Ilya
Sutskever,《ImageNet Classification with Deep Convolutional Neural
Networks》。不一样GPU处理图像的不比部分,仅在有些层通信。5个卷积层,3个全连接层,5000万个可调参数。最终全连接层输出到1000维softmax层,发生覆盖1000类标志分布。避免过拟合,Dropout
0.5概率隐藏层神经元输出置0,共享权值,下跌互适应,收敛迭代次数扩大一倍。数据拉长(data
augmentation)变形(水平翻转图像、反射变化flip,原始图像随机平移变换crop,随机光照、彩色变换、颜色抖动)扩大新数据。非线性激活函数,ReLU,收敛速度比sigmoid/tanh快。大数量陶冶,120万ImageNet图像数据。GPU完结,直接从GPU内存读出、写入。LRN(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(Inception
V1),克赖斯特ian Szegedy、Wei Liu随想《Going Deeper with
Convolutions》https://arxiv.org/abs/1409.4842
。使用1×1卷积核降维,在全连接层连接1×1、3×3、5×5卷积结果。宽度、深度扩展,加快。层数更深,22层,不相同深度伸张两上损失函数幸免反向传来梯度消失。伸张多种轻重卷积核,降维Inception模型,1×1卷积核下降特征映射厚度。

重组网络加深和增进卷积模块成效。

ResNet。二〇一五年,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)。

R-CNN,Region Proposal
Networks(RPN)和CNN结合。RPNs,任意尺寸图片一多如牛毛带识别物体概率分数提议区域。使用小网络在最终卷积特征映射滑动扫描,滑动网络每便与特征映射窗口全连接,映射到低维向量,送入八个全连接层(box回归层box-regression
layer和box分类层box-classification
layer)。重复总括,几千个提议区域(region)相互重叠,很多次重复提取特性。
FastR-CNN,加快版本,最终指出区域映射CNN最终卷积层特征映射,一张图纸只领到三回特征,提升速度,瓶颈在RPN,协理多类物体同时检测,行人车辆检测技能。
Fater-R-CNN,RPN交给CNN做,达到实时。Shaoqing Ren、Kaiming He、Ross
Girshick、Jian Sun论文《法斯特(Fast)er R-CNN:Towards Real-提姆(Tim)e Object Detection
with Region Proposal Networks》 https://arxiv.org/abs/1506.01497

充实新功用模块。

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

MNIST 亚历·克斯(Ale·x)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]))
}
# 定义亚历·克斯(Ale·x)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

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…

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)单元,10个门类对应10个通往基函数单元,每个单元84个输入,输出RBF单元计量输入向量和体系标记向量欧式距离,越远越大。

ResNet。二〇一五年,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)简要。

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(Inception
V1),克赖斯特ian Szegedy、Wei Liu小说《Going Deeper with
Convolutions》https://arxiv.org/abs/1409.4842
。使用1×1卷积核降维,在全连接层连接1×1、3×3、5×5卷积结果。宽度、深度扩张,加快。层数更深,22层,分裂深度扩展两上损失函数防止反向传播梯度消失。增添多种高低卷积核,降维Inception模型,1×1卷积核下降特征映射厚度。

加强卷积层效能。

组合网络加深和拉长卷积模块功效。

R-CNN,Region Proposal
Networks(RPN)和CNN结合。RPNs,任意尺寸图片一多元带识别物体概率分数指出区域。使用小网络在结尾卷积特征映射滑动扫描,滑动网络每一回与特点映射窗口全连接,映射到低维向量,送入七个全连接层(box回归层box-regression
layer和box分类层box-classification
layer)。重复统计,几千个提议区域(region)相互重叠,多次重复提取特性。
法斯特R-CNN,加快版本,最终指出区域映射CNN最后卷积层特征映射,一张图纸只领到一遍特征,升高速度,瓶颈在RPN,帮忙多类物体同时检测,行人车辆检测技术。
Fater-R-CNN,RPN交给CNN做,达到实时。Shaoqing Ren、Kaiming He、Ross
Girshick、Jian Sun杂谈《法斯特er R-CNN:Towards Real-提姆(Tim)e Object Detection
with Region Proposal Networks》 https://arxiv.org/abs/1506.01497

从分类职分到检测任务。图片目的检测,视频目的检测(VID)。

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),全连接层改为大局平均池化。二〇一四年 GoogleNet(Inception
V1),Christian Szegedy、Wei Liu杂文《Going Deeper with
Convolutions》https://arxiv.org/abs/1409.4842
。使用1×1卷积核降维,在全连接层连接1×1、3×3、5×5卷积结果。宽度、深度扩张,加速。层数更深,22层,不一致深度伸张两上损失函数防止反向传播梯度消失。扩展多种大大小小卷积核,降维Inception模型,1×1卷积核下落特征映射厚度。

卷积神经网络(convolutional neural network,CNN),权值共享(weight
sharing)网络布局下落模型复杂度,缩小权值数量,是语音分析、图像识别热点。无须人工特征提取、数据重建,直接把图片作输入,自动提取特征,对移动、比例缩放、倾斜等图片变形具有莫大不变形。卷积(convolution),泛函数分析积分变换数学方法,六个函数f和g生成第多个函数数学算子,表征函灵敏f与g翻转、平移重叠部分面积。f(x)、g(x)为R1六个可积函数。积分新函数为函数f与g卷积。∫-∞+∞f(τ)g(x-E)dτ。

参考资料:
《TensorFlow技术解析与实战》

ResNet。二〇一五年,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)简要。

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)单元,10个品种对应10个通往基函数单元,每个单元84个输入,输出RBF单元计量输入向量和类型标记向量欧式距离,越远越大。

R-CNN,Region Proposal
Networks(RPN)和CNN结合。RPNs,任意尺寸图片一序列带识别物体概率分数提议区域。使用小网络在最后卷积特征映射滑动扫描,滑动网络每回与特征映射窗口全连接,映射到低维向量,送入多个全连接层(box回归层box-regression
layer和box分类层box-classification
layer)。重复总计,几千个提出区域(region)相互重叠,数十次重复提取特性。
法斯特R-CNN,加快版本,最终指出区域映射CNN最终卷积层特征映射,一张图片只领到两遍特征,升高速度,瓶颈在RPN,扶助多类物体同时检测,行人车辆检测技术。
Fater-R-CNN,RPN交给CNN做,达到实时。Shaoqing Ren、Kaiming He、Ross
Girshick、Jian Sun杂文《法斯特(Fast)er R-CNN:Towards Real-提姆e Object Detection
with Region Proposal Networks》 https://arxiv.org/abs/1506.01497

Necognitron->LeCun->LeNet->AlexNet
->网络加深:VGG16->VGG19
->增强卷积层成效:NIN->谷歌Net->Incption V3 Incption V4
->
二者组合ResNet
->分类职责到检测职责:KCNN->法斯特RCNN->Faster-CNN
->伸张新效能模块:FCN->STNet->CNN+RM/LSTM
卷积神经网络起源神经认知机(neocognitron)模型,出现卷积结构。第二个卷积神经网络模型LeCun,1989年,发明人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,大数额,二〇一二年历史性突破亚历·克斯(Ale·x)Net。

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

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

网络加深。

迎接推荐香岛机械学习工作机会,我的微信:qingxingfengzi

扩充新功效模块。

从分类义务到检测任务。图片目的检测,录像目的检测(VID)。

加强卷积层功能。

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

参考资料:
《TensorFlow技术解析与实战》

神经网络(neural
networks,NN)包涵输入层、隐藏层、输出层。卷积神经网络隐藏层分为卷积层和池化层(pooling
layer 下采样层)。卷积层的卷积核(conventional
kernel)在本来图像平移提取特征,每个特征是特色映射。池化层汇聚特征稀疏参数收缩学习参数数量,下落网络复杂度。最大值池化(max
pooling)、平均值池化(average
pooling)。卷积核提取特征映射动作padding,移动步长(Stride)不肯定整除图像素宽度,越边边缘取样为SAME,不通过边缘取样为VALID。

亚历克斯Net,二零一二年,杰弗里 Hintion及学生亚历·克斯(Ale·x) Krizhevsky、Ilya
Sutskever,《ImageNet Classification with Deep Convolutional Neural
Networks》。不一样GPU处理图像的例外部分,仅在有些层通信。5个卷积层,3个全连接层,5000万个可调参数。最后全连接层输出到1000维softmax层,发生覆盖1000类标志分布。幸免过拟合,Dropout
0.5概率隐藏层神经元输出置0,共享权值,下跌互适应,收敛迭代次数扩充一倍。数据增加(data
augmentation)变形(水平翻转图像、反射变化flip,原始图像随机平移变换crop,随机光照、彩色变换、颜色抖动)扩充新数据。非线性激活函数,ReLU,收敛速度比sigmoid/tanh快。大数据陶冶,120万ImageNet图像数据。GPU完成,直接从GPU内存读出、写入。LRN(local
response normalization)规范化层。

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

迎接推荐新加坡机械学习工作机遇,我的微信:qingxingfengzi

网络加深。

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

亚历克斯Net,二〇一二年,杰弗里 Hintion及学生Alex Krizhevsky、Ilya
Sutskever,《ImageNet Classification with Deep Convolutional Neural
Networks》。不一样GPU处理图像的不比部分,仅在部分层通信。5个卷积层,3个全连接层,5000万个可调参数。最终全连接层输出到1000维softmax层,爆发覆盖1000类标志分布。幸免过拟合,Dropout
0.5概率隐藏层神经元输出置0,共享权值,下跌互适应,收敛迭代次数扩展一倍。数据增进(data
augmentation)变形(水平翻转图像、反射变化flip,原始图像随机平移变换crop,随机光照、彩色变换、颜色抖动)伸张新数据。非线性激活函数,ReLU,收敛速度比sigmoid/tanh快。大数量训练,120万ImageNet图像数据。GPU完毕,直接从GPU内存读出、写入。LRN(local
response normalization)规范化层。

#!/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]))
}
# 定义AlexNet网络模型
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.})

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层全连接分类特征。加深卷积层数达到准确率提高瓶颈。

MNIST 亚历克斯Net完毕。网络布局图。
1、仔细研读网络舆论,了然每一层输入、输出值、网络布局。
2、依照加载数据、定义网络模型、磨练模型、评估模型步骤达成网络。

MNIST 亚历克斯Net完成。网络布局图。
1、仔细研读网络舆论,明白每一层输入、输出值、网络布局。
2、依照加载数据、定义网络模型、陶冶模型、评估模型步骤完结网络。

Necognitron->LeCun->LeNet->AlexNet
->网络加深:VGG16->VGG19
->增强卷积层功效:NIN->谷歌Net->Incption V3 Incption V4
->
两头组合ResNet
->分类任务到检测职分:KCNN->法斯特(Fast)RCNN->法斯特er-CNN
->扩展新成效模块:FCN->STNet->CNN+RM/LSTM
卷积神经网络源点神经认知机(neocognitron)模型,出现卷积结构。第二个卷积神经网络模型LeCun,1989年,发明人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,大数量,2012年历史性突破亚历·克斯(Ale·x)Net。

追加新功用模块。

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

#!/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]))
}
# 定义亚历·克斯(Ale·x)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.})