下面的代码会抛出“无渐变”错误。
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)
我相信这是因为我的损失函数取决于占位符而不是变量,但在我的训练函数中,我传递了占位符的变量值。
有没有办法为变量创建占位符?
答案 0 :(得分:0)
我认为问题在于模型中没有可训练的变量。背向传播是针对可训练参数根据损失进行调整。不幸的是,这里没有