我正在尝试建立一个简单的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张量;然而,情况并非如此。
发布于 2019-01-21 08:10:43
它们需要密集的张量,而不是稀疏的张量。考虑一下这个形状
W = tf.ones((n_input_nodes,), dtype=tf.float32)
它需要形状为( 2,)的张量,该张量是密集的。
https://stackoverflow.com/questions/54281777
复制相似问题