不好意思地说,但是您的第一个代码几乎是正确的。你只是倒置
x和
phi在
tf.nn.conv2d:
g = tf.Graph()with g.as_default(): # data shape is "[batch, in_height, in_width, in_channels]", x = tf.Variable(np.array([0.0, 0.0, 0.0, 0.0, 1.0]).reshape(1, 1, 5, 1), name="x") # filter shape is "[filter_height, filter_width, in_channels, out_channels]" phi = tf.Variable(np.array([0.0, 0.5, 1.0]).reshape(1, 3, 1, 1), name="phi") conv = tf.nn.conv2d( x, phi, strides=[1, 1, 1, 1], padding="SAME", name="conv")
更新:
从版本r0.11开始,TensorFlow现在支持使用1D卷积
tf.nn.conv1d。我以前在粘贴到这里的stackoverflow文档中(现在已绝种)做了一个使用它们的指南:
一维卷积指南
考虑一个基本示例,该示例的长度
10和尺寸输入
16。批量大小为
32。因此,我们有一个带有输入shape的占位符
[batch_size, 10,16]。
batch_size = 32x = tf.placeholder(tf.float32, [batch_size, 10, 16])
然后,我们创建一个宽度为3的过滤器,并以
16通道作为输入,并同时输出
16通道。
filter = tf.zeros([3, 16, 16]) # these should be real values, not 0
最后,我们应用
tf.nn.conv1d跨距和填充:- 跨距 :整数
s- 填充
:这与2D相似,您可以在
SAME和之间进行选择
VALID。
SAME将输出相同的输入长度,而
VALID不会添加零填充。
在我们的示例中,跨度为2,有效填充为空白。
output = tf.nn.conv1d(x, filter, stride=2, padding="VALID")
输出形状应为
[batch_size, 4, 16]。
使用
padding="SAME",我们的输出形状为
[batch_size, 5, 16]。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)