我正在尝试设置一个简单的tf.keras模型,其中矢量作为输入馈入,输出是单个矩阵乘法的结果。
创建模型的代码行已成功但调用它进行正向传递会导致错误。
n_input_nodes = 2
n_output_nodes = 1
x = tf.keras.Input(shape=(n_input_nodes,))
W = tf.ones((n_input_nodes,n_output_nodes), dtype=tf.float32)
y = tf.matmul(x, W)
model = tf.keras.Model(inputs=x, outputs=y)
x_input = tf.constant([10,30.], shape=[1, 2])
output = model(x_input)
最后一行(即前向传递)抛出以下错误: ValueError: Argument must be a dense tensor: [array([[1.], [1.]], dtype=float32)] - got shape [1, 2, 1], but wanted [1].
输入具有形状(2,1)并且权重矩阵具有形状(2,1)。两者之间的矩阵乘法应该是有效的乘法并导致[1,1]张量; 然而,这种情况并非如此。
它们需要密集张量而不是稀疏张量。考虑这种形状
W = tf.ones((n_input_nodes,), dtype=tf.float32)
它需要一个密集的形状(2,)密度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。