ValueError: Dimensions must be equal, but are....... tensorflow.python.framework.errors_impl.Invalid

ValueError: Dimensions must be equal, but are....... tensorflow.python.framework.errors_impl.Invalid

  • tf.matmul(H, W)

tf.matmul(H, W)

当我们使用tensorflow来做深度学习问题时,往往会用到matmul这一矩阵乘法运算。注意到这里的H即我们经过调整后的输入,W为权重矩阵。两个矩阵相乘时要注意维度匹配问题。维度不匹配时会报错。可以通过第一处用到矩阵乘法的函数自查问题。例如,我们在
self.u_pred, self.v_pred = self.net_uv(self.x_u_tf, self.y_u_tf, self.t_u_tf)
中调用了net_uv函数,其三个输入维度即和后面H的维度紧密相关。然后我们查找
self.x_u_tf, self.y_u_tf, self.t_u_tf这三个的定义
self.x_u_tf = tf.placeholder(tf.float32, shape=[None, self.x_u.shape[1]])
self.y_u_tf = tf.placeholder(tf.float32, shape=[None, self.y_u.shape[1]])
self.t_u_tf = tf.placeholder(tf.float32, shape=[None, self.t_u.shape[1]])
三个占位符表示这三个输入对应列数分别为x_u, y_u, t_u的列数
再往上
self.x_u = x_u_train[:, 0:1]
self.y_u = x_u_train[: 1:2]
self.t_u = x_u_train[: 2:3]
发现y_u和t_u后面少了逗号,致使输入维度发生了变化,造成维度不匹配,值错误的发生。

你可能感兴趣的:(tensorflow,ValueError)