TensorFlow中CNN有关(基础)
TF中CNN有关(基础)
piccolo(一个正在学的人)
最近开始接触 学习,主要是记录自己好找的东西
Input
tf中一般用一个4-D的tensor来表示
其shape为[batch_size, in_width, in_height, channels],
卷积核
一般也用一个
4-D的tensor来表示,其shape为[filter_width, filter_height, input_channels, output_channels],卷积核移动的步长strides一般为[1, strides, strides, 1].
举例
输入为6x6的单通道(1)图片,每一次输入batch数目
[batch_size, 6, 6, 1]
Convolution
h_conv2d = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
- 卷积计算函数
stride [1, x步长, y步长, 1]padding:SAME/FULL/VALID(边距处理方式)
32个5*5卷积核,其shape为[5,5,1,32]
Padding
可参考TensorFlow中CNN的两种padding方式“SAME”和“VALID”
-
padding='SAME'(尺寸填充为原尺寸) -
模型尺寸分析:卷积层全都采用了(填充)补0,所以经过卷积层长和宽不变,只有深度加深。池化层全都没有补0,所以经过池化层长和宽均减小,深度不变。
out_height = ceil(float(in_height) / float(strides[1]) out_width = ceil(float(in_width) / float(strides[2])) -
padding='VALID'(尺寸不够就缩小) -
模型尺寸分析:经过卷积层长和宽往往都缩小,
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1])) out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
Max Pooling
h_pool = tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')#2x2的池化窗口 步长为2
2*2的max_pooling,其形状为[1,2,2,1],其步长strides为[1,2,2,1]
- max池化函数
ksize [1, x边长, y边长,1]池化窗口大小stride [1, x步长, y步长, 1]padding:SAME/FULL/VALID(边距处理方式)
激活函数
全连接层一般使用sigmoid或者tanh
卷积层一般使用tanh,ReLu及其改进型
可参考
常用激活函数(激励函数)理解与总结
深度学习之损失函数与激活函数的选择
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)