Понимание tenorflow sess.run () и решение ValueError: Градиенты не указаны для любой переменной, проверьте график - PullRequest
0 голосов
/ 11 апреля 2020
W = tf.Variable([0.5],tf.float32)
b = tf.Variable([0.1],tf.float32)
x = tf.placeholder(tf.float32)
y= tf.placeholder(tf.float32)

linear_model = W*x + b

squared_delta = tf.square(linear_model - y)
loss = tf.reduce_sum(squared_delta)
optimizer = tf.train.AdamOptimizer(learning_rate=1e-5)
train = optimizer.minimize(tf.cast(1,dtype="float32")) # getting error with this 
# train = optimizer.minimize(loss) #did not get error with this

init = tf.global_variables_initializer()
sess = tf.Session()

sess.run(init)

for i in range(3):
    print(sess.run(squared_delta,{x:[1,2,3,4],y:[0,-1,-2,-3]}))

В приведенном выше коде. У меня есть 2 переменные поезда

  1. Комментарий не дает ошибок
  2. Другой дает ошибку


    Ошибка:

ValueError: Градиенты не указаны ни для одной переменной, проверьте график на наличие операций, которые не поддерживают градиенты, между переменными ["", ... .] и Tensor потерь ("Cast_11: 0", shape = (), dtype = float32).

Но моя проблема в том. Когда я напечатал значение loss , это 2.3 , и теперь я сам даю значение потери, тогда это ошибка.


В этом коде я успешно создал ошибку, и этот код пытается показать фактическую ошибку, которую я получаю в своем основном коде. В моем основном коде я изменяю изменение (умножая его на что-то) первоначальную потерю и затем добавляю оптимизатору. Я действительно новичок в tenorflow. Так что мне не хватает некоторой связи с loss и optimiser . Более того, я только побежал

sess.run(squared_delta,{x:[1,2,3,4],y:[0,-1,-2,-3]}))

Почему он вычисляет все дерево? .ie потеря? не должно быть остановлено после вычисления squared_delta ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...