任何人都可以帮我解释我在将 tensorflow 用于神经网络时获得的这些图表吗?
Posted
技术标签:
【中文标题】任何人都可以帮我解释我在将 tensorflow 用于神经网络时获得的这些图表吗?【英文标题】:Can anyone help me interpret these graphs I obtained when using tensorflow for neural networks? 【发布时间】:2021-05-09 07:43:08 【问题描述】:Plot visualization in R
model %>%
fit (x = x_train,
y = y_train,
epochs = 25,
batch_size = 32,
validation_split =.2
)
上面的代码是我在运行 fit 参数时用来获取图形的代码,但是,每次运行代码时,图形都是不同的。我理解这就是你如何可视化模型是如何训练或学习的。损失显示在顶部图表中,准确性显示在第二个图表中,对于最后一个图表,我不断更改时期、批量大小和验证,它始终为 0。我不完全理解这些图以及 y 轴上的数字意思。
【问题讨论】:
【参考方案1】:对于机器学习模型right here 中的“损失”和“准确度”究竟指的是什么,有一个很好的解释。术语“mape”指的是“平均绝对百分比误差”,这是衡量模型性能的另一种方式 - 它越低,模型性能越好。
查看随附的图表,很容易看出您的模型存在问题,因为您的模型的准确性在训练集和验证集上都没有增加,而且损失也没有减少。例如,这可能是由于您使用的模型存在问题(不适合您期望它执行的任务)或您输入模型的数据(例如,可能以不一致的方式标记)。
【讨论】:
【参考方案2】:尽管您用于深度学习的数据预处理步骤或构建模型的过程可能不正确(即第一张图表的 y 轴数字,第二张图表上的结果),但我将重点关注这个答案关于为什么“每次代码运行时图表都不同”,以及“y 轴上的数字”。
y 轴上的数字:在第二张图表中,准确度在 0 到 1 的范围内,而第三张取值从 0 到 100 表示错误百分比。
为什么在模型执行迭代后图表会变得不同:
获得不同的结果不是错误,而是机器学习中的一个功能 [1],因为它包括 随机(非确定性) 过程 [2],通过算法的解释利用随机性或概率决策。
这种结果差异可能是由于训练数据的差异、随机学习算法或评估程序或平台的差异(从不同的机器上运行模型)造成的。换句话说,随机性可能存在于数据收集、观察顺序、算法、采样或重采样 [3]。例如,在训练深度神经网络期间,该算法可能会使用随机性,因为初始权重(系数)是随机的,或者每个 epoch 中样本的随机洗牌。
你能解决这个问题吗?
是的。您可以通过为“随机状态”或“random seed
”[4、5、6、7、8] 分配一个固定值来控制随机性。 “random_state
”变量
控制在应用拆分之前应用到数据的洗牌 [9]。
我不熟悉 R,因此上面的文档在 scikit-learn 中使用 Python,但我想您可以基于 R 文档 [10] 使用“seed.number
”做类似的事情,即通过添加在模型拟合期间,validation_split 旁边的 seed.number="some value"。
我建议您查看参考文献中的文章,希望对您有所帮助。
【讨论】:
以上是关于任何人都可以帮我解释我在将 tensorflow 用于神经网络时获得的这些图表吗?的主要内容,如果未能解决你的问题,请参考以下文章