python - 尽管模型非常成功,但稀疏分类交叉熵损失的规模似乎确实很高
问题描述
我正在CNN
使用 Tensorflow 训练一些关于专有数据的网络。我们有大量的数据,而且这些模型似乎能够学习大量关于数据分类的信息(到目前为止都是二进制分类)。
有时,训练/测试准确度曲线可能非常好,在某些情况下高达 95%。然而,损失函数在规模方面是可疑的。从视觉上看,它们看起来不错,以及我对表现良好的期望如何,但这不是正确的数量级。
谁能告诉我这种缩放通常如何在 TF/Keras 中适当地完成?我对这些模型很有信心,因为它们已经在其他数据集上进行了测试并且泛化得非常好,但是扭曲的损失函数并不是很好报告。
学习率大约为 0.0001。L1
并且L2
使用相同的 lambda 值,当提供给模型时,我在 0.01 和 0.03 之间取得了最大的成功。我目前没有使用任何辍学。
我包括了一个特别高变异精度运行的照片。情况并非总是如此,但有时确实会发生。我怀疑这个问题部分是由于异常数据,或者可能是正则化值。
以下是相关的代码片段。
model = tf.keras.models.Sequential()
if logistic_regression is not True:
for i in range(depth):
# 1
model.add(Conv2D(
15,
kernel_size=(10, 3),
strides=1,
padding='same',
activation='relu',
data_format='channels_last',
kernel_regularizer=tf.keras.regularizers.l1_l2(
l1=regularizer_param,
l2=regularizer_param)
))
model.add(MaxPooling2D(
pool_size=(3, 3),
strides=1,
padding='valid',
data_format='channels_last'))
model.add(BatchNormalization())
if dropout is not None:
model.add(Dropout(dropout))
# flatten
model.add(Flatten(data_format='channels_last'))
model.add(Dense(
len(self.groups),
# use_bias=True if initial_bias is not None else False,
# bias_initializer=initial_bias
# if initial_bias is not None
# else None,
kernel_regularizer=tf.keras.regularizers.l1_l2(
l1=regularizer_param,
l2=regularizer_param)
))
model.compile(
optimizer=tf.keras.optimizers.Adagrad(
learning_rate=learning_rate,
initial_accumulator_value=0.1,
epsilon=1e-07,
name='Adagrad'),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
解决方案
您不必担心损失函数值的规模。请记住,损失函数只是衡量网络距离的一个指标。但是,您始终可以按自己喜欢的方式扩展它。不同时期的损失趋势有什么关系?你希望它是一个平稳的下降,这就是你的第二个数字所显示的。
损失就是这样:对于同一网络,对于同一数据集,仅在相对意义上才有意义的任意数字。它没有其他意义。事实上,损失与指标也不能很好地对应:参见 Huang et al., 2019。
因为它们已经在其他数据集上进行了测试并且泛化得非常好,
这才是最重要的。
但是螺旋损失函数不是很好报告。
您可以将这些损失扩大 1,000。它们仅在相对意义上有意义。
参考:
推荐阅读
- sql - 将每日 CSV 文件从电子邮件仅更新值导入 SQL Server
- html - CSS渐变悬停在不同大小的图像上
- java - 错误:不兼容的类型:意外的返回值 Char 与 String 比较
- php - 重复数字数组,php
- c# - 如何为此代码块编写单元测试
- java - Citrus 框架“[520] 没有匹配的常量” - 自定义 HTTP 状态代码
- google-cloud-datastore - Google 数据流 - 使用数据存储选项连接到数据存储会出现错误
- c# - 如何获取 xpath 中的最后一个表?
- aws-lambda - 尖峰 AWS Lambda 函数
- fortran - 查询无格式文件fortran