gpt4 book ai didi

python - 为什么会出现此ValueError?

转载 作者:行者123 更新时间:2023-12-03 08:25:15 24 4
gpt4 key购买 nike

因此,这是我的代码,可以全面了解:https://hastebin.com/qigimomika.py


所以基本上我对以下几行有疑问:

一点上下文:

def weight_variable(shape):
initial = tensorflow.truncated_normal(shape, stddev=0.01)
return tensorflow.Variable(initial)

def bias_variable(shape):
initial = tensorflow.constant(0.01, shape=shape)
return tensorflow.Variable(initial)

w_layer1 = weight_variable([4, 32])
b_layer1 = bias_variable([32])

input_layer = tensorflow.placeholder("float", [4])

产生错误的行:
h_layer1 = tensorflow.add(tensorflow.matmul(input_layer, w_layer1),b_layer1)

当我运行整个代码(上面的代码)时,它会产生以下ValueError
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') 
with input shapes: [4], [4,32].

现在我的问题是:会发生什么,如何避免这种情况?

感谢您的关注

编辑:感谢Prune和Ali Abbasi。

我的解决方案:我将input_layer更改为:
input_layer = tensorflow.placeholder("float", [1, 4])

问题是我的第一个数组是 tensorflow 等级1([4]),而我的第二个数组是2([4,32])。所以我添加了这一行:
state = [state]

从而说明输入是:
output_layer.eval(feed_dict={input_layer : state})

状态最初是[[1,2,3,4](等级1),现在是[[1,2,3,4]](等级2)。

,谢谢

编辑2:好吧,自上次编辑以来,我进行了很多更改。我忘了记录更改。如果您想查看我的代码 here,它是。我知道这很乱。现在,我很高兴该狗屎在起作用:“D。您将无法理解我的代码,这完全是一团糟,但是我只想记录当前状态。 很大,谢谢的支持,Ali Abbasi :D 。

最佳答案

在这里,因为您知道MatMul运算是经典的矩阵乘法运算,所以如果我们想将两个矩阵M1M2分别与形状AxBBxC相乘,则当要进行乘法运算并得到结果时,我们应该将B形状相同:
M1 x M2生成形状为R的矩阵AxC

因此,在您的情况下,您尝试将两个矩阵与4x14x32形状相乘,从而引发形状问题,您应该转置第一个张量,然后得到:
1x4 MatMul 4x32结果在1x32矩阵中。

您的代码在这里:
h_layer1 = tensorflow.add(tensorflow.matmul(input_layer, w_layer1),b_layer1)
像这样使用:
h_layer1 = tensorflow.add(tensorflow.matmul(tf.transpose(input_layer), w_layer1),b_layer1)
有关更详细的答案,您可以在每个阶段打印张量的形状,例如:
print h_layer1.get_shape()
并查看形状,然后可以修改形状和输入。

祝好运。

关于python - 为什么会出现此ValueError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942443/

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