2
Как я могли получить градиент потери на входные данных, а не переменный вес и смещениеtensorflow LSTM, как я мог бы получить градиент потери на входных данных, а не переменный вес и смещение
lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=0.0)
outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)
pred = tf.matmul(outputs[-1], weights['out'] + biases['outs'])
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)
compute_gradients = optimizer.compute_gradients(cost)
train = optimizer.apply_gradients(compute_gradients)
with tf.Session() as sess:
sess.run(init)
fd = {x:batch_x, y:batch_y}
sess.run(train, feed_dict=fd)
grad_vals = sess.run([(g,v) for (g,v) in compute_gradients], feed_dict=fd)
Я мог рассчитать градиент по весу и смещению, так как я могу получить градиент в batch_x напрямую?
input_grad = sess.run(tf.gradients(cost, batch_x), feed_dict=fd)
Значение input_grad равно [None].
Как насчет этого? input_grad = sess.run (tf.gradients (cost, x), feed_dict = fd) –
он работает, спасибо! Я снова прочитал документ, В tf.gradients (dy, dx), dy и dx должны быть тензорами, и они должны иметь соединение в графе. Еще раз спасибо! – guohui