gpt4 book ai didi

python - Tensorflow - conv3d.transpose - 索引超出范围

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:57 27 4
gpt4 key购买 nike

我正在尝试创建一个 3D VAE 生成对抗网络。我的第一层有问题:

g1 = tf.nn.conv3d_transpose(z, filter = [4,4,4,512,200], strides= [1,1,1,1,1],
output_shape = (1,4,4,4,512), padding = "SAME")

其中 z 是一个 (1,200) 张量,它是编码器的输出,运行良好。当我尝试运行 session 只是为了确保生成器正常运行时,我收到以下错误:

File "/home/michantia/anaconda2/envs/tf-gpu/lib/python2.7/site-packages/tensorflow/python/ops/nn_ops.py", line 1401, in conv3d_transpose
if not value.get_shape()[axis].is_compatible_with(filter.get_shape()[4]):

File "/home/michantia/anaconda2/envs/tf-gpu/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 521, in __getitem__
return self._dims[key]

IndexError: list index out of range

目标是使用多个层来生成 32x32x32 体素表示。

我不太确定我在这里做错了什么。任何反馈都将受到高度赞赏。

谢谢

中号

最佳答案

为了避免此错误,您必须在使用输入、过滤器和输出(如占位符)之前声明它们。

此外,要使用tf.nn.conv3d_transpose ,输入中必须有一个 5D 张量。接下来,您必须像 5D 占位符一样声明 z:

z = tf.placeholder(tf.float32, shape=(1,200,1,1,200))

filter = tf.placeholder(tf.float32, shape=(4,4,4,512,200))

out = tf.placeholder(tf.int32, shape=(5,))

请注意,输出必须是 int32 而不是 float32

之后,您可以声明转置卷积:

g1 = tf.nn.conv3d_transpose(z, filter, out, [1,1,1,1,1],padding = "SAME")

关于python - Tensorflow - conv3d.transpose - 索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242500/

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