【发布时间】:2019-08-02 14:33:26
【问题描述】:
我有一个在 Tensorflow 中实现的 CNN,改编自教程: CNN with Estimators.
摘自data_input_fn:
dataset = dataset.batch(batch_size)
iterator = dataset.make_one_shot_iterator()
features, labels = iterator.get_next()
return features, labels
摘自model_fn:
loss = tf.losses.softmax_cross_entropy(onehot_labels=labels, logits=logits)
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train_op = optimizer.minimize( loss=loss)
我正在使用 tf.estimator.Estimator 并在调用 train 函数时提供 steps = 10000。如何在训练期间为数据集中的所有样本(大约 3M 样本)提供权重?我的理解是在第一个模型的训练期间所有样本都具有相同的权重(1/N),并用于计算加权损失。然后,根据计算出的损失值,在下一个模型的训练期间应该修改、保存和重新加载权重。是否应该从 csv 文件中提供权重,因为原始 TF 记录文件不包含权重,还是有更好的方法来做到这一点?另外,是否有一个可接受的函数来根据损失值修改权重?
【问题讨论】:
标签: python tensorflow machine-learning