T5 -运动鞋品牌识别

>-**🍨本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/2Wc0B5c2SdivAR3WS_g1bA)中的学习记录博客**

>-**🍦 参考文章:[Pytorch实战|第P5周:运动鞋识别](https://www.heywhale.com/mw/project/6352467ca42e79f98f6bbf13)**

>-**🍖 原作者:[K同学啊|接辅导、项目定制](https://mtyjkh.blog.csdn.net/)**

神经网络

model = models.Sequential([
    layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
    layers.Conv2D(16, (3, 3), activation='relu', input_shape=(img_height, img_width, 3)),  # Convolutional layer 1, 3*3 kernel
    layers.AveragePooling2D((2, 2)),  # Pooling layer 1, 2*2 sampling
    layers.Conv2D(32, (3, 3), activation='relu'),  # Convolutional layer 2, 3*3 kernel
    layers.AveragePooling2D((2, 2)),  # Pooling layer 2, 2*2 sampling
    layers.Dropout(0.3),
    layers.Conv2D(64, (3, 3), activation='relu'),  # Convolutional layer 3, 3*3 kernel
    layers.Dropout(0.3),
    layers.Flatten(),  # Flatten layer, connecting convolutional layers to the fully connected layer
    layers.Dense(128, activation='relu'),  # Fully connected layer, further feature extraction
    layers.Dense(len(class_names))  # Output layer, producing expected results
])

model.summary()  # Print network structure

Dropout

  在神经网络中,Dropout层有助于防止过拟合,从而提高模型的泛化能力。Dropout是一种正则化技术,其工作原理是在训练过程中随机丢弃(设置为0)一部分神经元。这样可以减少神经元之间的依赖关系,避免过度拟合训练数据。

layers.Dropout(0.4)表示在训练过程中随机关闭40%的神经元。这会迫使模型在训练时学习到更加稳健和可靠的特征,从而在新数据上表现得更好。注意,Dropout仅在训练期间起作用,在评估和预测时,Dropout层将不起作用。

学习率

  学习率(learning rate)是梯度下降优化算法中的一个关键超参数,它决定了模型在训练过程中参数更新的步长。选择合适的学习率对模型的收敛速度和性能至关重要。以下是学习率大与学习率小的优缺点分析:

学习率较大: 优点:

  1. 加快学习速度:较大的学习率意味着每次参数更新的步长较大,因此网络可能更快地达到最优解。
  2. 有助于跳出局部最优值:较大的学习率更容易跳过局部最优解,有机会找到全局最优解。

缺点:

  1. 导致模型训练不收敛:较大的学习率可能导致参数更新过于剧烈,使得模型在最优解附近来回震荡而无法收敛。
  2. 容易导致模型不精确:使用较大的学习率可能使模型无法充分拟合数据,导致预测结果不够精确。

改进方案:使用学习率衰减策略、自适应学习率方法,如 AdaGrad、RMSprop 或 Adam 等。

学习率较小: 优点:

  1. 有助于模型收敛、模型细化:较小的学习率允许模型在最优解附近进行更精细的搜索,从而提高模型性能。
  2. 提高模型精度:较小的学习率可以使模型更好地拟合数据,提高预测结果的准确性。

缺点:

  1. 很难跳出局部最优值:较小的学习率容易导致模型陷入局部最优解,无法找到全局最优解。
  2. 收敛缓慢:较小的学习率意味着参数更新步长较小,可能需要更多的迭代次数才能达到最优解。

改进方案:使用动态学习率方法,如学习率衰减策略、自适应学习率方法(如 AdaGrad、RMSprop 或 Adam 等)、或使用学习率热启动策略。

早停与保存最佳模型参数
EarlyStopping()参数说明:

EarlyStopping()是Keras中的一个回调函数(callback),用于在训练过程中提前停止以防止模型过拟合。通过监控指定的性能指标,当模型在一定数量的连续训练轮次(epochs)中没有明显改进时,EarlyStopping()将终止训练。这有助于节省计算资源并避免过拟合。

EarlyStopping()的主要参数如下:

  1. monitor (字符串):需要监控的性能指标,例如 'val_loss''val_accuracy' 等。根据指定的指标,EarlyStopping()将判断何时停止训练。
  2. min_delta (浮点数):改进阈值,即被认为是性能提升的最小变化。如果在连续的训练轮次中性能指标未达到此阈值,则会触发提前停止。
  3. patience (整数):在停止提升之前,允许模型连续训练的轮次数量。当连续patience个训练轮次中性能指标未达到min_delta时,训练将被终止。
  4. verbose (整数):日志显示模式,0表示不显示日志信息,1表示显示日志信息。
  5. mode (字符串):{'auto', 'min', 'max'}之一。根据monitor指定的性能指标决定提前停止的条件。如果是'min',则当指标不再减小时停止;如果是'max',则当指标不再增大时停止;如果是'auto',将基于指标的名称自动推断停止条件。
  6. baseline (浮点数):指定一个阈值,当监控指标达到此阈值时,训练将被提前终止。这可以用来设置一个性能指标的目标值。
  7. restore_best_weights (布尔值):是否在训练结束后恢复模型的最佳权重。如果为True,则在训练结束时,模型的权重将回滚到在验证集上表现最好的那一轮。

最终效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值