如何理解最简单的CNN代码(卷积层到全链接层)
2017-10-17 11:18
288 查看
with tf.variable_scope('local3') as scope:
# 第一层全连接
reshape = tf.reshape(pool2, [BATCH_SIZE,-1])
dim = reshape.get_shape()[1].value
weights = variables('weights', shape=[dim,384], stddev=0.004)
biases = variable_on_cpu('biases', [384])
# ReLu 激活函数
local3 = tf.nn.relu(tf.matmul(reshape, weights)+biases,
name = scope.name)
其中的BATCH_SIZE是一个batch的大小,因为网络的输入必定是一张图片,而一个batch里有
BATCH_SIZE张图片,需要将其reshape,并且tf.matul的格式是XW而不是推导时的WX,所以
为[BATCH_SIZE,-1]形状。
总之,前面的卷积和池化的BATCH_SIZE张图片都是放在一起进行,而到全链接时,换了一种更
高效的数据组织方式(reshape),将batch内每一张图片全链接,详细类似推导时的转置。
# 第一层全连接
reshape = tf.reshape(pool2, [BATCH_SIZE,-1])
dim = reshape.get_shape()[1].value
weights = variables('weights', shape=[dim,384], stddev=0.004)
biases = variable_on_cpu('biases', [384])
# ReLu 激活函数
local3 = tf.nn.relu(tf.matmul(reshape, weights)+biases,
name = scope.name)
其中的BATCH_SIZE是一个batch的大小,因为网络的输入必定是一张图片,而一个batch里有
BATCH_SIZE张图片,需要将其reshape,并且tf.matul的格式是XW而不是推导时的WX,所以
为[BATCH_SIZE,-1]形状。
总之,前面的卷积和池化的BATCH_SIZE张图片都是放在一起进行,而到全链接时,换了一种更
高效的数据组织方式(reshape),将batch内每一张图片全链接,详细类似推导时的转置。
相关文章推荐
- linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 【4】如何理解CNN中的卷积?
- Linux内核分析课程--完成一个简单的时间片轮转多道程序内核代码,理解操作系统是如何工作的
- 如何简单理解卷积
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 云课堂 Linux内核分析 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 分析一个简单C程序的汇编代码,理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 计算机是如何工作的?--通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的--20135334赵阳林
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux内核分析课程--通过反汇编一个简单的c程序,分析汇编代码并理解计算机如何工作的
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 1、通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的