我是计算机视觉和ML的新手。在使用Python和TensorFlow几周后,我有一些问题。
如何转换经过训练的卷积网络(CNN)将其用作检测器? (获取热图)
训练有素的MNIST模型
MODEL = [None,28 ** 2]> [CONV3 + POOL]> [CONV3 + POOL]> [DENSELAYER]> [无,10]
[无,WH]> [MODEL]> [无,w,h,10]
我读到这样做有必要将[DENSELAYER]转换为卷积。我是对的吗?
提前感谢您的帮助,对不起我的英语:)旧代码如下:
scala> Cons(0, Cons(1, Cons(2, Nil)))
res4: Cons[Int] = Cons(0,Cons(1,Cons(2,Nil)))
scala> List.sum(res4)
res5: Int = 3
我认为第一个完全连接的层应该是7x7转换,但我不确定如何处理第二个fc层(输出层):
with tf.name_scope('dense_layer'):
dense1 = tf.reshape(conv2, [-1, _weights['wd1'].get_shape().as_list()[0]])
dense1 = tf.nn.relu(tf.matmul(dense1, _weights['wd1']) + _biases['bd1'])
dense1 = tf.nn.dropout(dense1, dropout)
out = tf.nn.softmax(tf.matmul(dense1, _weights['out']) + _biases['out'])
return out
答案 0 :(得分:4)
是。将第一个FC层重塑为7x7就是您想要的。 对于输出层,您要查找的是1x1 convolution,它基本上在每个像素上运行完全连接的输出层。
wc4 = tf.reshape(_weights['out'], [1, 1, d1, out])
conv4 = conv2d_valid(conv3, wc4, _biases['out'])