【问题标题】:Shape must be rank 2 but is rank 3 for 'MatMul_46' (op: 'MatMul') with input shapes: [100,100], [?,15,100]形状必须为 2 级,但对于“MatMul_46”(操作:“MatMul”)为 3 级,输入形状为:[100,100]、[?,15,100]
【发布时间】:2018-08-12 12:44:36
【问题描述】:

我在尝试实现这行代码时遇到了这个错误

形状必须为 2 级,但对于输入形状为 [100,100]、[?,15,100] 的“MatMul_46”(操作:“MatMul”)为 3 级。

Q = tf.placeholder(tf.float32, shape=(None, 15))
word_level = Embedding ( vocab_size , 100 , input_length=15)(Q) 
#shape(?,15,100)
Wb = tf.Variable(tf.zeros([100, 100]))
C = tf.matmul( word_level ,Wb)

我认为问题是因为 3 维和 2 维矩阵的等级不同 但我不知道如何修改这个

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    要修改张量以适应特定形状,您可以使用 tf.reshape,但请注意以有意义的方式对其进行重塑。

    documentation

    reshape = tf.reshape(word_level, [-1, 100])
    Wb = tf.Variable(tf.zeros([100, 100]))
    C = tf.matmul(reshape ,Wb)
    

    【讨论】:

    • 我想为每个批次大小构建 Wb,所以最终答案是形状 (? , 15 ,100)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多