您的位置:首页 > 健康 > 养生 > 电商怎么做账_美客多电商平台入驻链接_中央人民政府网_nba排名

电商怎么做账_美客多电商平台入驻链接_中央人民政府网_nba排名

2025/4/1 7:17:23 来源:https://blog.csdn.net/m0_56758840/article/details/146508982  浏览:    关键词:电商怎么做账_美客多电商平台入驻链接_中央人民政府网_nba排名
电商怎么做账_美客多电商平台入驻链接_中央人民政府网_nba排名

实战播:

怎么判定一个模型好不好,你设置的值对不对?  需要再看几个值:

例如:

 model = Sequential()for units in model_structure:model.add(Dense(units, activation='relu'))model.add(Dropout(train_config.get('dropout_rate', 0.3)))model.add(Dense(1, activation='sigmoid'))

他的训练集表现损失值不好! 一直维持在0.68+;这就需要不好了;

那么 模型的损失(loss)值表现不佳 怎么解决这个问题?

  1. 调整学习率:如果学习率过高,可能导致损失值波动,建议尝试降低学习率,例如使用学习率衰减策略来动态调整学习率。(这个可以看我之前的:创作中心-CSDN)

  2. 数据增强:如果训练数据集规模较小,可以使用数据增强技术,例如随机旋转、剪裁等,增强数据的多样性和模型的泛化能力。(因为我现在是一个2分类问题,全部都是数据,所以就不考虑;唯一的方式就是增加数据量!)

  3. 模型正则化:增加Dropout层或使用L1/L2正则化,防止模型过拟合。例如,Dropout的概率可以调整为0.2到0.5之间。

  4. 调整网络结构:尝试不同的模型结构,比如增加或减少神经元的数量,或者导入复杂的层结构(例如,残差连接)来改善模型性能。

  5. 批量大小(Batch Size)调整:确保Batch Size适中,过小可能导致不稳定,过大则可能导致计算不精确。可以尝试调整Batch Size以优化训练过程。

dense层和dropout层:

想象你正在训练一只机器人助手,它需要学会识别不同的水果。这个机器人有很多“小助手”(神经元),它们一起合作来完成任务。

  1. Dense层(全连接层)

    • 小助手A:负责把水果的特征(颜色、形状、大小)整理成一份报告。
    • 小助手B:负责根据这份报告,判断水果是苹果、香蕉还是橘子。
    • 小助手C:负责把判断结果转化为机器人能理解的指令,比如“抓取苹果”。
    • 每个小助手都和其他小助手紧密合作,确保信息传递准确无误。

    在代码中,Dense(units, activation='relu') 就是添加一个全连接层,units 是小助手的数量,activation='relu' 是小助手们合作时使用的方式(ReLU激活函数)。

  2. Dropout层

    • 在训练过程中,为了让小助手们不要过于依赖某些特定的水果特征,机器人会随机让部分小助手“休息”。
    • 比如,今天小助手A和B休息了,小助手C和D继续工作。这样,机器人学会了在不同的小助手组合下完成任务,变得更加灵活和稳定。

    在代码中,Dropout(train_config.get('dropout_rate', 0.3)) 就是设置让30%的小助手随机“休息”,以防止过拟合。

总结

  • Dense层:像是一个团队,每个成员都紧密合作,负责特定的任务。
  • Dropout层:像是一个轮换机制,确保团队成员不会过于依赖某些特定的成员,从而提升整体的适应能力。

案例表达: (模型正则化)

1.当我尝试把dropout_rate从0.3调到0.5

... (原先是0.71-->0.68,同时准确率维持在0.55+)

model.add(Dropout(train_config.get('dropout_rate', 0.5)))

2.现在我把代码改为正则化:
model = Sequential()
for units in model_structure:model.add(Dense(units, activation='relu', kernel_regularizer=regularizers.l2(0.01)))  # 使用L2正则化# model.add(Dense(units, activation='relu', kernel_regularizer=regularizers.l1(0.01)))  # 使用L1正则化
model.add(Dense(1, activation='sigmoid'))

在此代码中,kernel_regularizer=regularizers.l2(0.01)添加了L2正则化,而kernel_regularizer=regularizers.l1(0.01)则为L1正则化。

因此,当我使用L1或者L2之后,还没有之前的手动效果好! 因此,这个训练集--->舍弃正则化!!!

L1与L2正则化的定义

  • L1正则化(Lasso回归):通过在损失函数中增加权重绝对值的和作为惩罚项,从而驱使某些权重减小到零,生成稀疏解,适合特征选择.
  • L2正则化(Ridge回归):通过增加权重平方和作为惩罚项,促使所有权重趋向较小的均匀值,而不是完全为零。它通过减少权重避免过拟合,增强模型的稳定性.

这两种正则化方法可以在模型中结合使用,以提高模型的泛化能力和抗干扰能力。

训练集(loss)和验证集(val_loss)

  • 训练集(loss):这就像是在练习题上不断练习,模型在这些题目上越来越熟练,错误越来越少。loss值越小,说明模型在训练数据上表现越好。
  • 验证集(val_loss):这就像是在考试题目上测试,loss值越小,说明模型在真实数据上的表现越好。

训练集(accuracy)和验证集(val_accuracy)

  • 训练集(accuracy):这就像是在练习题上答对的比例,accuracy越高,说明模型在训练数据上越熟练。
  • 验证集(val_accuracy):这就像是在考试题上答对的比例,accuracy越高,说明模型在真实数据上的表现越好。

数据

  1. epoch 1:模型刚开始训练,loss和val_loss都很高,accuracy和val_accuracy也很低。就像刚上学的孩子,刚开始学东西,什么都不会。
  2. epoch 5:loss和val_loss都在下降,accuracy和val_accuracy也在上升。就像孩子逐渐掌握知识,练习题和考试题都能答对更多。
  3. epoch 10:loss和val_loss继续下降,accuracy和val_accuracy继续上升。就像孩子越来越熟练,考试成绩也越来越好。
  4. epoch 15:loss和val_loss下降变慢,accuracy和val_accuracy也趋于稳定。就像孩子已经掌握了大部分知识,进一步提高需要更多的努力。

总结

数据表示:

模型在训练过程中的表现,

loss和val_loss越小,accuracy和val_accuracy越高,说明模型越来越好。

就像孩子从不会到会,从生疏到熟练,再到精通,这是一个不断学习和进步的过程。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com