相关疑难解决方法(0)

tf.nn.conv2d在tensorflow中做了什么?

我在tf.nn.conv2d 这里看一下tensorflow的文档.但我无法理解它的作用或它想要实现的目标.它在文档上说,

#1:将滤镜展平为具有形状的二维矩阵

[filter_height * filter_width * in_channels, output_channels].

那现在做什么?是元素乘法还是纯矩阵乘法?我也无法理解文档中提到的其他两点.我在下面写了:

#2:从输入张量中提取图像块以形成虚拟的形状张量

[batch, out_height, out_width, filter_height * filter_width * in_channels].

#3:对于每个补丁,右对乘滤波器矩阵和图像补丁矢量.

如果有人能给出一个例子,一段代码(非常有用)可能并解释那里发生了什么以及为什么操作是这样的,这将是非常有用的.

我尝试过编写一小部分并打印出操作的形状.不过,我无法理解.

我试过这样的事情:

op = tf.shape(tf.nn.conv2d(tf.random_normal([1,10,10,10]), 
              tf.random_normal([2,10,10,10]), 
              strides=[1, 2, 2, 1], padding='SAME'))

with tf.Session() as sess:
    result = sess.run(op)
    print(result)
Run Code Online (Sandbox Code Playgroud)

我理解卷积神经网络的点点滴滴.我在这里研究过它们.但是,张量流的实现并不是我的预期.所以它提出了这个问题.

编辑:所以,我实现了一个更简单的代码.但我无法弄清楚发生了什么.我的意思是结果是这样的.如果有人能告诉我什么过程产生这个输出,那将是非常有帮助的.

input = tf.Variable(tf.random_normal([1,2,2,1]))
filter = tf.Variable(tf.random_normal([1,1,1,1]))

op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')
init = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init)

    print("input")
    print(input.eval())
    print("filter")
    print(filter.eval())
    print("result")
    result = sess.run(op) …
Run Code Online (Sandbox Code Playgroud)

neural-network tensorflow

125
推荐指数
4
解决办法
7万
查看次数

标签 统计

neural-network ×1

tensorflow ×1