我正在尝试建立一个简单的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]张量;但是,事实并非如此。
答案 0 :(得分:0)
它们需要密集的张量而不是稀疏的张量。考虑这种形状
W = tf.ones((n_input_nodes,), dtype=tf.float32)
它需要一个密集的形状(2,)的张量。