对于conv2d,假设输入的2D矩阵具有形状(W,H)且conv核心大小为(Wk,H),这意味着内核的高度与输入矩阵的高度相同。在这种情况下,我们可以认为内核大小为Wk的conv1执行与conv2d相同的计算吗?
例如:
tf.layers.conv2d(
kernel_size=tf.Variable(tf.truncated_normal([Wk, H, 1, out_dim], stddev=0.1),
input=...
)
等于:
tf.layers.conv1d(kernel_size=Wk, input=...)
答案 0 :(得分:0)
他们不一样; conv2d内核有更多的权重,因此会以不同的方式进行训练。此外,根据padding
的设置,conv2d操作的输出大小也可能不是1D。
答案 1 :(得分:0)
tf.nn.conv1d
只需致电tf.nn.conv2d
这是tf.nn.conv1d
的描述:
在内部,此op重塑输入张量并调用tf.nn.conv2d
。例如,如果data_format并非以“ NC”开头,则将形状为[batch, in_width, in_channels]
的张量重塑为[batch, 1, in_width, in_channels]
,并将过滤器重塑为[1, filter_width, in_channels, out_channels]
。然后将结果重新调整为[batch, out_width, out_channels]
(其中out_width
是步幅和填充的函数,如conv2d
一样)并返回给调用者。