python - 如何在训练期间将一些样本扔到一个小批量中
问题描述
我正在使用 AdamOptimizer 来训练一个简单的 DNN 网络。(我使用的是 tf1.4 版本)。而且我想在训练期间
丢弃一批中的一些坏样本。假设我在一个批次中有 4096 个样本,我想丢弃 96 个样本,只使用剩余的 4000 个样本来计算损失并进行反向传播。
我怎样才能做到这一点?
代码设置非常简单,如下所示:
lables = tf.reshape(labels, [batch_size, 1])
logits = tf.reshape(logits, [batch_size, 1])
loss_vector = tf.nn.sigmoid_cross_entropy_with_logits(multi_class_labels=labels,
logits=logits)
loss_scalar = tf.reduce_mean(loss_vector)
opt = tf.train.AdamOptimizer(learning_rate=learning_rate)
train_op = opt.minimize(loss_scalar, global_step=global_step)
一种可能的解决方案是在 loss_vector 之后和 reduce_mean 之前进行掩码操作。但我不确定这是否是正确的解决方案,我对引擎盖下发生的事情有一些疑问:
- 在最小化()操作中,由于输入参数是标量,它如何知道某些输入样本被屏蔽掉了?
- 在最小化()操作中,会发生多少次反向传播?
- 训练过程中,样本是一个一个的输入到图中,TF怎么知道哪些该保留哪些该丢弃?
解决方案
推荐阅读
- loops - RN FlatList 循环变量
- powershell - Invoke-WebRequest :远程服务器返回错误:(500)内部服务器错误
- arrays - 在 bash 中同时迭代三个数组
- php - 基于独占值获取结果:mysql & laravel
- javascript - 套接字正在创建单个实例。如何从多个客户端创建此应用程序?
- android - 如何识别特定文本并将该文本替换为android中图像内的其他文本?
- c# - 使用c#将日期时间插入oracle数据库
- android - 无法使用 cmd 构建 android 项目
- python - 正则表达式不返回结果
- javascript - 星级CSS问题