如何堆叠Tensorflow的conv2d_transpose()的多层

派特

我正在尝试堆叠2层以tf.nn.conv2d_transpose()对张量进行向上采样。在前馈期间它工作正常,但在向后传播时出现错误:ValueError: Incompatible shapes for broadcasting: (8, 256, 256, 24) and (8, 100, 100, 24)

基本上,我只是将第一个的输出设置conv2d_transpose为第二个的输入:

convt_1 = tf.nn.conv2d_transpose(...)
convt_2 = tf.nn.conv2d_transpose(conv_1)

只使用一个conv2d_transpose,一切正常。仅当多个conv2d_transpose堆叠在一起时才会发生该错误

我不确定实现多层的正确方法conv2d_transpose任何有关如何做到这一点的建议将不胜感激。

这是一个复制该错误的小代码:

import numpy as np
import tensorflow as tf

IMAGE_HEIGHT = 256
IMAGE_WIDTH = 256
CHANNELS = 1

batch_size = 8
num_labels = 2

in_data = tf.placeholder(tf.float32, shape=(batch_size, IMAGE_HEIGHT, IMAGE_WIDTH, CHANNELS))
labels = tf.placeholder(tf.int32, shape=(batch_size, IMAGE_HEIGHT, IMAGE_WIDTH, 1))

# Variables
w0 = tf.Variable(tf.truncated_normal([3, 3, CHANNELS, 32]))
b0 = tf.Variable(tf.zeros([32]))

# Down sample
conv_0 = tf.nn.relu(tf.nn.conv2d(in_data, w0, [1, 2, 2, 1], padding='SAME') + b0)
print("Convolution 0:", conv_0)


# Up sample 1. Upscale to 100 x 100 x 24
wt1 = tf.Variable(tf.truncated_normal([3, 3, 24, 32]))
convt_1 = tf.nn.sigmoid(
          tf.nn.conv2d_transpose(conv_0, 
                                 filter=wt1, 
                                 output_shape=[batch_size, 100, 100, 24], 
                                 strides=[1, 1, 1, 1]))
print("Deconvolution 1:", convt_1)


# Up sample 2. Upscale to 256 x 256 x 2
wt2 = tf.Variable(tf.truncated_normal([3, 3, 2, 24]))
convt_2 = tf.nn.sigmoid(
          tf.nn.conv2d_transpose(convt_1, 
                                 filter=wt2, 
                                 output_shape=[batch_size, IMAGE_HEIGHT, IMAGE_WIDTH, 2], 
                                 strides=[1, 1, 1, 1]))
print("Deconvolution 2:", convt_2)

# Loss computation
logits = tf.reshape(convt_2, [-1, num_labels])
reshaped_labels = tf.reshape(labels, [-1])
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, reshaped_labels)
loss = tf.reduce_mean(cross_entropy)

optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
Wei Liu

我想您需要在conv2d_transpose中更改“跨度”参数。conv2d_transpos就像,conv2d但是输入和输出相反。

对于conv2dstride输入形状将决定输出形状。对于conv2d_transposestride输出形状将决定输入形状。现在您的步幅为[1 1 1 1],这意味着输出和输入conv2d_transpose大致相同(忽略边界效应)。

对于输入H = W = 100 ,如果将设置为SAME ,则stride = [1 2 2 1]其输出conv2d_tranpose应为200 简而言之,输入,输出和步幅必须兼容。conv2dpadding

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用堆叠的2d图制作3d图?

来自分类Dev

theano.tensor.nnet.conv.conv2d的输出大小

来自分类Dev

Tensorflow:tf.nn.conv2d实际在哪里执行?

来自分类Dev

对conv2d_transpose感到困惑

来自分类Dev

设置TensorFlow Conv2d操作的权重和偏置张量

来自分类Dev

Tensorflow:tf.nn.separable_conv2d做什么?

来自分类Dev

Tensorflow conv2d_transpose(deconv)out_backprop的行数与计算的不匹配

来自分类Dev

进行预测时,conv2d_transpose取决于batch_size

来自分类Dev

如何使用TensorFlow堆叠LSTM层

来自分类Dev

TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

来自分类Dev

在TensorFlow中编写类似Conv2D的操作

来自分类Dev

在PyTorch中如何实现Conv2d的算法

来自分类Dev

如何理解张量流中的conv2d_transpose

来自分类Dev

如何在Tensorflow中保持堆叠张量

来自分类Dev

Tensorflow配置文件为Conv2D输出2 FLOPS而不是1

来自分类Dev

具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

来自分类Dev

无效的参数:您必须使用dtype float和shape [?,?,?,?]的占位符张量'conv2d_transpose_1_target'的值。

来自分类Dev

Tensorflow Keras Conv2D多个过滤器

来自分类Dev

使用tf.conv2d添加偏见-Tensorflow.js

来自分类Dev

如何在keras中将Conv1D的输出与Conv2D的输出合并

来自分类Dev

tensorflow conv2d参数数量

来自分类Dev

Conv2d Tensorflow结果错误-精度= 0.0000e + 00

来自分类Dev

tensorflow tf.nn.conv2d 中的特征数

来自分类Dev

tensorflow conv2d_transpose 梯度

来自分类Dev

Tensorflow - tf.nn.conv2D() 中的权重值是否发生了变化?

来自分类Dev

tensorflow中conv2d的顺序输出是什么?

来自分类Dev

tensorflow-如何使用可变图像的大小进行 conv2d_transpose?

来自分类Dev

在 Tensorflow 中查找 conv2d 层的权重

来自分类Dev

在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

Related 相关文章

  1. 1

    如何使用堆叠的2d图制作3d图?

  2. 2

    theano.tensor.nnet.conv.conv2d的输出大小

  3. 3

    Tensorflow:tf.nn.conv2d实际在哪里执行?

  4. 4

    对conv2d_transpose感到困惑

  5. 5

    设置TensorFlow Conv2d操作的权重和偏置张量

  6. 6

    Tensorflow:tf.nn.separable_conv2d做什么?

  7. 7

    Tensorflow conv2d_transpose(deconv)out_backprop的行数与计算的不匹配

  8. 8

    进行预测时,conv2d_transpose取决于batch_size

  9. 9

    如何使用TensorFlow堆叠LSTM层

  10. 10

    TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

  11. 11

    在TensorFlow中编写类似Conv2D的操作

  12. 12

    在PyTorch中如何实现Conv2d的算法

  13. 13

    如何理解张量流中的conv2d_transpose

  14. 14

    如何在Tensorflow中保持堆叠张量

  15. 15

    Tensorflow配置文件为Conv2D输出2 FLOPS而不是1

  16. 16

    具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

  17. 17

    无效的参数:您必须使用dtype float和shape [?,?,?,?]的占位符张量'conv2d_transpose_1_target'的值。

  18. 18

    Tensorflow Keras Conv2D多个过滤器

  19. 19

    使用tf.conv2d添加偏见-Tensorflow.js

  20. 20

    如何在keras中将Conv1D的输出与Conv2D的输出合并

  21. 21

    tensorflow conv2d参数数量

  22. 22

    Conv2d Tensorflow结果错误-精度= 0.0000e + 00

  23. 23

    tensorflow tf.nn.conv2d 中的特征数

  24. 24

    tensorflow conv2d_transpose 梯度

  25. 25

    Tensorflow - tf.nn.conv2D() 中的权重值是否发生了变化?

  26. 26

    tensorflow中conv2d的顺序输出是什么?

  27. 27

    tensorflow-如何使用可变图像的大小进行 conv2d_transpose?

  28. 28

    在 Tensorflow 中查找 conv2d 层的权重

  29. 29

    在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

热门标签

归档