tens.Variable的Tensorflow占位符

时间:2018-06-04 22:01:35

标签: python tensorflow

下面的代码会抛出“无渐变”错误。

self.x1 = tf.placeholder(tf.float64)
self.x2 = tf.placeholder(tf.float64)
self.x3 = tf.placeholder(tf.float64)

self.cos1_denom = tf.norm(self.x1, axis=0) * tf.norm(self.x2, axis=0)
self.cos1 = tf.matmul(self.x1, self.x2, transpose_b=True) / self.cos1_denom
self.cos2_denom = tf.norm(self.x1, axis=0) * tf.norm(self.x2, axis=0)
self.cos2 = tf.matmul(self.x1, self.x3, transpose_b=True) / self.cos2_denom
self.loss = tf.reduce_mean(self.cos2) - tf.reduce_mean(self.cos1)
self.optimizer = tf.train.AdamOptimizer(learning_rate=self.eta).minimize(self.loss)

我相信这是因为我的损失函数取决于占位符而不是变量,但在我的训练函数中,我传递了占位符的变量值。

有没有办法为变量创建占位符?

1 个答案:

答案 0 :(得分:0)

我认为问题在于模型中没有可训练的变量。背向传播是针对可训练参数根据损失进行调整。不幸的是,这里没有