首页 > 解决方案 > 在张量流中训练时使用自定义损失值

问题描述

我想使用我自己的自定义损失值来训练我的神经网络。因此,我想对一个小批量执行前馈传播以将激活存储在内存中,然后使用我自己的损失值执行反向传播。这将使用 tensorflow 来完成。

最后,我需要做一些类似的事情:

sess.run(optimizer, feed_dict={x: training_data, loss: my_custom_loss_value}

那可能吗?我假设优化器取决于损失,而损失本身取决于输入。因此,我想将输入输入到图表中,但我想将我的值用于损失。

标签: pythontensorflow

解决方案


我猜由于优化器依赖于激活,它们将被评估,换句话说,输入将被馈送到网络中。这是一个例子:

import tensorflow as tf

a = tf.Variable(tf.constant(8.0))
a = tf.Print(input_=a, data=[a], message="a:")
b = tf.Variable(tf.constant(6.0))
b = tf.Print(input_=b, data=[b], message="b:")

c = a * b

optimizer = tf.train.AdadeltaOptimizer(learning_rate=0.1).minimize(c)
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_op)

    value, _ = sess.run([c, optimizer], feed_dict={c: 1})
    print(value)

最后,打印的值为 1.0,而控制台显示:a:[8]b:[6]这意味着输入已被评估。


推荐阅读