machine-learning - 如何添加回归头

标签 machine-learning tensorflow keras

我非常习惯直接使用tensorflow(python)以及使用keras构建模型。到目前为止,我构建的所有模型都是从输入图像到 softmax 输出的传统直通处理。事实上,我很惊讶它是如此简单。

我现在想训练一个用于分类和回归的模型。斯坦福 CNN 类(class)的幻灯片 16 CS231n正是我想做的。我真的不清楚(实际上,我有 NFI)如何对 tensorflow 图进行分支、创建两个损失函数并正确反向传播它们。

有人能给我提供代码示例吗?非常感谢。

最佳答案

回答评论中的问题:

我没有处理过此类问题,但这里有一些一般性想法。

理想情况下,有利于回归的(共享)权重也应该有利于分类。在这种情况下,loss_weights 并不重要,因为两个损失都应该将权重推向同一方向。您只需确保 loss * loss_weight 的平均大小大致相同,这样就不会完全忽略一项损失。

如果您发现头部正在战斗,即您可以训练一个单独的回归模型,其精度比与分类一起训练时高得多,您可以更早地分支头部(以便它们共享更少的权重和有更专门的层)或者只训练两个单独的模型。还有大量关于多任务训练的研究论文,可让您共享更多权重来完成不同的任务。

关于machine-learning - 如何添加回归头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47724838/

相关文章:

tensorflow - TensorBoard 2.0.0 不更新训练标量

node.js - TensorflowJS 文本/字符串分类

python - 无法将 tf.keras.optimizer 与 tf.keras.models.sequential 一起使用

python - Keras 的 TensorFlow 后端是否依赖 eager execution?

machine-learning - LibSVM 中的特征值缩放是否有必要?

python - LightGBM 中的交叉验证

python - 随机森林过拟合

Matlab libsvm - 向量系数 w 遇到问题

tensorflow - 通过 Huggingface Transformers 更新 BERT 模型

python - 凯拉斯错误 : "BatchNormalization Shape must be rank 1 but is rank 4 for batch_normalization"