具有单矩阵乘法的简单张量流keras模型不起作用

时间:2019-01-20 23:00:08

标签: python tensorflow

我正在尝试建立一个简单的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]张量;但是,事实并非如此。

1 个答案:

答案 0 :(得分:0)

它们需要密集的张量而不是稀疏的张量。考虑这种形状

W = tf.ones((n_input_nodes,), dtype=tf.float32)    

它需要一个密集的形状(2,)的张量。