python - 如何在Tensorflow中使用conv1d_transpose?

标签 python tensorflow machine-learning convolution conv-neural-network

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/

相关文章:

python - Selenium 中的定位器和 Webelement 有什么区别?

python - 对于 Electron 应用程序,可以将 Selenium 与 Python 一起使用吗?

python - 警告 :tensorflow:sample_weight modes were coerced from . .. 到 ['...' ]

c++ - 如何在 Tensorflow 的 C++ API 中解码后获取图像形状

python - “操作”对象没有属性 '_id_value'

python - 哪个更适合使用 web2py 进行生产?

python - 是否记录了通过实例访问类变量?

machine-learning - Keras TypeError : Cannot convert Type TensorType(float32, 3D)(变量子张量{:int64:}. 0)

python - Keras softmax 输出和准确率

machine-learning - doc2vec : How is PV-DBOW implemented