gpt4 book ai didi

python - 如何在 Tensorflow 中使用 conv1d_transpose?

转载 作者:行者123 更新时间:2023-11-28 21:39:16 25 4
gpt4 key购买 nike

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 要求批量大小静态已知,不能传-1;
  • 另一方面,输出形状是动态的(这解释了维度)。

此外,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)

关于python - 如何在 Tensorflow 中使用 conv1d_transpose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com