Потеря отображения в Tensorflow DQN без выхода из tf.Session()

#python #tensorflow #q-learning #cross-entropy

#python #tensorflow #q-обучение #перекрестная энтропия

Вопрос:

У меня есть DQN, полностью настроенный и работающий, но я не могу понять, как отобразить потерю, не выходя из сеанса Tensorflow.

Сначала я подумал, что это связано с созданием новой функции или класса, но я не уверен, куда это поместить в коде, и что конкретно поместить в функцию или класс.

 observations = tf.placeholder(tf.float32, shape=[None, num_stops], name='observations')
actions = tf.placeholder(tf.int32,shape=[None], name='actions')
rewards = tf.placeholder(tf.float32,shape=[None], name='rewards')

# Model
Y = tf.layers.dense(observations, 200, activation=tf.nn.relu)
Ylogits = tf.layers.dense(Y, num_stops)

# sample an action from predicted probabilities
sample_op = tf.random.categorical(logits=Ylogits, num_samples=1)


# loss
cross_entropies = tf.losses.softmax_cross_entropy(onehot_labels=tf.one_hot(actions,num_stops), logits=Ylogits)

loss = tf.reduce_sum(rewards * cross_entropies)

# training operation
optimizer = tf.train.RMSPropOptimizer(learning_rate=0.001, decay=.99)
train_op = optimizer.minimize(loss)
  

Затем я запускаю сеть, которая работает без ошибок.

 with tf.Session() as sess:

'''etc. The network is run'''

sess.run(train_op, feed_dict={observations: observations_list,
                             actions: actions_list,
                             rewards: rewards_list})
  

Я хочу, чтобы loss from train_op отображался пользователю.

Ответ №1:

попробуйте это

 loss, _ = sess.run([loss, train_op], feed_dict={observations: observations_list,
                             actions: actions_list,
                             rewards: rewards_list})