在Tensorflow docs中,tf.nn.conv2d
- 操作被描述为:
[filter_height * filter_width * in_channels, output_channels]
的二维矩阵。[batch, out_height, out_width, filter_height * filter_width * in_channels]
的虚拟张量。是否有应用 步骤2的操作?我在API文档中找不到类似的东西。我可能会使用错误的关键字进行搜索。
答案 0 :(得分:5)
现在将其添加到tensorflow api:https://www.tensorflow.org/versions/r0.9/api_docs/python/array_ops.html#extract_image_patches
答案 1 :(得分:2)
我想这样做的诀窍是:
[filter_height, filter_width, in_channels, output_channels]
output_channels = filter_height * filter_width * in_channels
进行过滤
np.eye().reshape()
tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')
您现在拥有形状[batch, out_height, out_width, filter_height * filter_width * in_channels]
这是一个简单的代码,用于输入大小为3 * 3的输入图像,包含1个通道(批量大小为1)。
import tensorflow as tf
import numpy as np
input_value = np.arange(1, 10).reshape((1, 3, 3, 1))
input = tf.constant(input_value)
input = tf.cast(input, tf.float32)
filter_value = np.eye(9).reshape((3, 3, 1, 9))
filter = tf.constant(filter_value)
filter = tf.cast(filter, tf.float32)
output = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')