некоторые вопросы о тензорном потоке GradientDescentOptimizer - PullRequest
0 голосов
/ 27 марта 2019

Я пытался протестировать мой код с использованием тензорного потока, я установил скорость обучения GradientDescentOptimizer равной 1 и вывел Wx1 старый вес, новый вес и градиенты.но новый вес! = старый вес - 1 * градиенты , я не знаю, почему может вызвать эту ситуацию.

  1. Wx1 старое значение [[-0.0016595601, ....]]
  2. градусы [[-0.02760417, ....]]
  3. Wx1 новое значение [[-0.0016706019, ....]]

партияРазмер данных X равен 500 * 1000, а размер Y равен 500 * 30.Размер Wx1 составляет 1000 * 512, а размер в градусах также равен 1000 * 512

loss = net.loss(x, y, keep_prob)
optimizer = tf.train.GradientDescentOptimizer(1).minimize(loss)
init = tf.global_variables_initializer()

with tf.Session() as sess:
   sess.run(init)
   for X, Y, tot in data.next_batch('train'):
       feed_dict = {x: X,
                    y: Y}
       Wx1 = net.Wx1
       Wx1_val_old = sess.run(Wx1)
       grads = sess.run(tf.gradients(loss, [Wx1]), feed_dict=feed_dict)[0]
       sess.run(optimizer, feed_dict=feed_dict)
       Wx1_val_new = sess.run(Wx1)
.
...