如何在 Tensorflow 中使用 conv1d_transpose?
How to use the conv1d_transpose in Tensorflow?
conv1d_transpose
还没有稳定版的Tensorflow,但是可以实现on github
我想创建一维反卷积网络。输入的形状是[-1, 256, 16]
,输出应该是[-1,1024,8]
。内核大小为 5,步幅为 4。
我尝试用这个函数构建一维卷积层:
(output_depth, input_depth) = (8, 16)
kernel_width = 7
f_shape = [kernel_width, output_depth, input_depth]
layer_1_filter = tf.Variable(tf.random_normal(f_shape))
layer_1 = tf_exp.conv1d_transpose(
x,
layer_1_filter,
[-1,1024,8],
stride=4, padding="VALID"
)
layer_1
的形状是TensorShape([Dimension(None), Dimension(None), Dimension(None)])
,但应该是[-1,1024,8]
我做错了什么?如何在 Tensorflow 中实现一维反卷积?
此时拉取请求已打开,因此 API 和行为可能而且可能会改变。 conv1d_transpose
可能期望的某些功能不受支持:
output_shape
要求静态知道batch size,不能传-1
;
- 另一方面,输出形状是动态的(这解释了
None
维度)。
此外,kernel_width=7
需要 in_width=255
,而不是 256
。应该使 kernel_width
小于 4
以匹配 in_width=256
。结果是这个演示代码:
x = tf.placeholder(shape=[None, 256, 16], dtype=tf.float32)
filter = tf.Variable(tf.random_normal([3, 8, 16])) # [kernel_width, output_depth, input_depth]
out = conv1d_transpose(x, filter, output_shape=[100, 1024, 8], stride=4, padding="VALID")
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
result = sess.run(out, feed_dict={x: np.zeros([100, 256, 16])})
print(result.shape) # prints (100, 1024, 8)
新tf.contrib.nn.conv1d_transpose is now added to Tensorflow API r1.8.
conv1d_transpose
还没有稳定版的Tensorflow,但是可以实现on github
我想创建一维反卷积网络。输入的形状是[-1, 256, 16]
,输出应该是[-1,1024,8]
。内核大小为 5,步幅为 4。
我尝试用这个函数构建一维卷积层:
(output_depth, input_depth) = (8, 16)
kernel_width = 7
f_shape = [kernel_width, output_depth, input_depth]
layer_1_filter = tf.Variable(tf.random_normal(f_shape))
layer_1 = tf_exp.conv1d_transpose(
x,
layer_1_filter,
[-1,1024,8],
stride=4, padding="VALID"
)
layer_1
的形状是TensorShape([Dimension(None), Dimension(None), Dimension(None)])
,但应该是[-1,1024,8]
我做错了什么?如何在 Tensorflow 中实现一维反卷积?
此时拉取请求已打开,因此 API 和行为可能而且可能会改变。 conv1d_transpose
可能期望的某些功能不受支持:
output_shape
要求静态知道batch size,不能传-1
;- 另一方面,输出形状是动态的(这解释了
None
维度)。
此外,kernel_width=7
需要 in_width=255
,而不是 256
。应该使 kernel_width
小于 4
以匹配 in_width=256
。结果是这个演示代码:
x = tf.placeholder(shape=[None, 256, 16], dtype=tf.float32)
filter = tf.Variable(tf.random_normal([3, 8, 16])) # [kernel_width, output_depth, input_depth]
out = conv1d_transpose(x, filter, output_shape=[100, 1024, 8], stride=4, padding="VALID")
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
result = sess.run(out, feed_dict={x: np.zeros([100, 256, 16])})
print(result.shape) # prints (100, 1024, 8)
新tf.contrib.nn.conv1d_transpose is now added to Tensorflow API r1.8.