Python 训练tensorflow模型,使多批次的损失最小化

Python 训练tensorflow模型,使多批次的损失最小化,python,tensorflow,Python,Tensorflow,我想根据几个批次的损失值之和来训练模型的权重。然而,似乎一旦为每个单独的批处理运行了图形,返回的对象只是一个常规的numpy数组。因此,当您尝试使用像GradientDescentOptimizer这样的优化器时,它不再具有用于计算损失总和的变量的信息,因此它无法找到有助于最小化损失的权重梯度。下面是一个tensorflow脚本示例来说明我所说的内容: weights = tf.Variable(tf.ones([num_feature_values], tf.float32)) feature

我想根据几个批次的损失值之和来训练模型的权重。然而,似乎一旦为每个单独的批处理运行了图形,返回的对象只是一个常规的numpy数组。因此,当您尝试使用像GradientDescentOptimizer这样的优化器时,它不再具有用于计算损失总和的变量的信息,因此它无法找到有助于最小化损失的权重梯度。下面是一个tensorflow脚本示例来说明我所说的内容:

weights = tf.Variable(tf.ones([num_feature_values], tf.float32))
feature_values = tf.placeholder(tf.int32, shape=[num_feature_values])
labels  = tf.placeholder(tf.int32, shape=[1])

loss_op = some_loss_function(weights, feature_values, labels)

with tf.Session() as sess:
    for batch in batches:
        feed_dict = fill_feature_values_and_labels(batch)

        #Calculates loss for one batch
        loss = sess.run(loss_op, feed_dict=feed_dict)
        #Adds it to total loss
        total_loss += loss

# Want to train weights to minimize total_loss, however this 
# doesn't work because the graph has already been run.
optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(total_loss)

with tf.Session() as sess:
    for step in xrange(num_steps):
        sess.run(optimizer)

total_loss
是一个numpy数组,因此不能在优化器中使用。有人知道解决这个问题的方法吗?我想在多个批次中使用信息,但仍然需要完整的图表,以保持
总损失是权重的函数这一事实?

您在任何培训师中优化的东西都必须是图表的一部分,在这里,你训练的是实际实现的结果,所以它不起作用

我认为你应该这样做,把你的输入构建成一批批

intput = tf.placeholder("float", (number_of_batches, batch_size, input_size)

然后让你的目标也是一个可以训练的3d张量。

你在任何训练器中优化的东西必须是图表的一部分,这里你训练的是实际实现的结果,所以它不起作用

我认为你应该这样做,把你的输入构建成一批批

intput = tf.placeholder("float", (number_of_batches, batch_size, input_size)
然后让你的目标也成为一个可以训练的三维张量