实例代码逐行解读

这些参数是通过 `argparse` 模块定义的命令行参数,通常用于控制深度学习模型训练的各种设置。以下是每个参数的详细说明:

1. **`--train_setting_flow`**: 整数类型,控制训练流程的设置。
   - 0: 从左到右(基本)
   - 1: 从右到左(基本)
   - 2: 双向(Twin)从左到右
   - 3: 双向(Twin)从右到左
   - 默认值为0。

2. **`--simple_model`**: 整数类型,选择模型的复杂度。
   - 0: 基础网络模型 复杂,计算量大
   - 1: 简单网络模型
   - 默认值为0。

3. **`--shared_model`**: 整数类型,控制模型共享设置(双向模型)。
   - 0: 共享模型
   - 1: 不共享
   - 2: 转移单支路学习
   - 默认值为0。

shared_model 参数选项的具体含义:

  1. 0 = 共享模型(Shared model)

    • 共享模型:两个分支共享相同的权重和结构。这样做的好处是减少参数数量,防止模型过拟合,也有助于将两个输入的相似性或差异直接映射到相同的特征空间。
    • 适用场景:当两个输入的特征或模式相似且希望它们共享相同的特征提取方式时,使用共享模型。
  2. 1 = 不共享模型(False)

    • 独立模型:两个分支拥有各自的权重和结构,不进行参数共享。这意味着每个分支会独立学习自己的特征,允许每个输入具有更加独立的特征提取过程。
    • 适用场景:当两个输入的模式或特征差异较大时,选择不共享模型可以让每个分支独立地学习和提取适合各自输入的特征。
  3. 2 = 单支路迁移学习(Transfer Single Branches Learning)

    • 单支路迁移学习:两个分支的某些层可能共享,或者一个分支的学习结果用于另一个分支。这种设置通常用于迁移学习场景,即将已经在一个任务上训练好的模型部分迁移到另一个任务中。
    • 适用场景:当一个分支已经在相关任务中训练好,另一分支需要通过迁移学习从第一个分支的知识中受益时,可以使用这种方式。

4. **`--exp_name`**: 字符串类型,实验的名称,默认值为 `"Experiment0Marconi100"`。

5. **`--input_height`**: 整数类型,输入图像的高度,默认值为192。

6. **`--input_width`**: 整数类型,输入图像的宽度,默认值为384。

7. **`--batch_size`**: 整数类型,训练时的批量大小,默认值为30。

8. **`--num_epochs`**: 整数类型,训练的轮次(epochs),默认值为100。

batch_sizenum_epochs 是在深度学习中常见的超参数,决定了模型训练时的数据处理方式。它们在训练过程中的作用如下:

. batch_size(批量大小)

batch_size 是指在一次前向传播和反向传播过程中,神经网络处理的样本数量。

  • 定义:在每次模型参数更新之前,神经网络使用的样本数量。
  • 常见值batch_size 可以是任意正整数,但常见的选择是 16、32、64、128 等。
  • 工作原理
    1. 数据集被分割成小批量(batch)来训练,而不是整个数据集一次性训练。
    2. 在每个批次(batch)上执行前向传播和反向传播,以更新模型参数。

优点

  • 小的 batch_size(如 32 或 64)可以减少内存使用,适合大型数据集或资源有限的硬件(如 GPU)。
  • 大的 batch_size(如 128 或 256)可以提高并行计算效率,加快训练速度,但可能需要更多内存。

权衡

  • 小的 batch size:更多参数更新步骤,训练更加精细,但收敛速度可能较慢。
  • 大的 batch size:更快的训练速度,但参数更新较粗糙,可能会导致训练不稳定或需要更高的学习率。

 num_epochs(训练轮数)

num_epochs 指模型完整地遍历整个训练数据集的次数。

  • 定义:模型对整个训练数据集进行一次训练称为一个 epoch。
  • 工作原理
    1. 数据集被分割成多个批次(batch)。
    2. 在一个 epoch 中,所有批次的样本都会被训练一次。
    3. 通常需要多个 epoch 才能让模型收敛,找到合适的参数。

优点

  • 较少的 epoch 数量:训练时间短,但可能模型还没有充分学习到数据特征。
  • 较多的 epoch 数量:允许模型充分训练,可以提高模型的泛化能力,但训练时间较长,且可能出现过拟合问题。

权衡

  • 过少的 epoch:模型可能未完全学习到数据的特征,导致欠拟合。
  • 过多的 epoch:模型可能过拟合训练数据,导致泛化能力下降。

总结:

  • batch_size 决定了每次参数更新时使用的数据量,影响训练速度和资源使用。
  • num_epochs 决定了模型完整地看多少遍数据,影响模型训练的程度和效果。

9. **`--lr`**: 浮点类型,初始学习率,默认值为0.01。

10. **`--train_size_set`**: 整数类型,训练集的大小,默认值为34240。

11. **`--test_size_set`**: 整数类型,测试集的大小,默认值为7191。

12. **`--k1`**: 整数类型,基本的k值,默认值为32。

13. **`--d1`**: 整数类型,基础的稠密神经元数量,默认值为300。

14. **`--alpha1`**: 浮点类型,超参数α1,默认值为0.2。

15. **`--alpha2`**: 浮点类型,超参数α2,默认值为0.7。

16. **`--alpha3`**: 浮点类型,超参数α3,默认值为0.1。

17. **`--learning_rate_decay`**: 整数类型,是否启用学习率衰减。
   - 1: 启用
   - 0: 不启用
   - 默认值为0。

18. **`--learning_rate_plateau`**: 整数类型,是否在监控损失时减少学习率。
   - 1: 启用
   - 0: 不启用
   - 默认值为0。

19. **`--decay_factor_lr`**: 浮点类型,学习率衰减因子,默认值为0.9。

20. **`--patience_decay`**: 整数类型,学习率衰减的耐心值,默认值为5。

21. **`--selected_imgs`**: 整数类型,控制选定的图像深度。
   - 1: 选定图像
   - 0: 整个数据集
   - 默认值为0。

22. **`--continue_fit`**: 字符串类型,控制是否继续训练。
   - 0: 不继续
   - 其他值:继续训练,指定检查点的名称(例如030)
   - 默认值为'0'。

23. **`--gpus`**: 整数类型,使用的GPU数量,默认值为1。

24. **`--gpuids`**: 字符串类型,使用的GPU ID,默认值为'0'(可以是多个ID,如0,1,2,3等)。

这些参数可以帮助用户在命令行中灵活地配置模型训练的各项设置。

引用\[1\]:I’m not familiar with the lora library or the chatglm model. Can you provide more information or context about what you’re trying to do? 引用\[2\]:介绍: 为方便学习,对ChatGlm添加了lora实现,并对代码做了逐行解读,核心的部分如数据的解析,loss的定义,lable制作,lora调用的框架流程等。 git链接GitHub - Pillars-Creation/ChatGLM-LoRA: ChatGLM-6B添加了LoRA实现,以及部分核心代码逐行讲解 ,实例部分是做了个新闻短标题的生成 论文链接 https://arxiv.org/pdf/2106.09685.pdf 核心的流程 。 引用\[3\]:You can replace the FeedforwardNN class with your own model and adjust the hyperparameters as needed. As for using Lora specifically, I’m not sure what you mean by that. Can you provide more context or information? 引用\[4\]:LoRA is a library for low-power, long-range communication using the LoRaWAN protocol. It is not directly related to the ChatGLM model. If you want to use LoRA for fine-tuning the ChatGLM model, you would need to provide more information on how you intend to use it and what specific modifications or adaptations you are looking to make. 问题: chatglm代码生成 回答: 对于chatglm代码的生成,我不熟悉lora库或chatglm模型。如果你能提供更多关于你想要做什么的信息或背景,我可以给出更多的帮助。\[1\]如果你是指生成chatglm代码的方法,你可以参考GitHub上的ChatGLM-LoRA项目,该项目对ChatGlm添加了lora实现,并提供了代码解读和核心流程的说明。\[2\]但是请注意,lora库是用于低功耗、远距离通信的,与ChatGLM模型并没有直接关联。如果你想要使用lora对ChatGLM模型进行微调,你需要提供更多关于你打算如何使用lora以及你希望进行的具体修改或适应的信息。\[3\]\[4\] #### 引用[.reference_title] - *1* *3* [Cursor太强了,从零开始写ChatGLM大模型的微调代码](https://blog.csdn.net/KanShiMeKan/article/details/129651474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ChatGLM-LoRA实现&代码逐行讲解](https://blog.csdn.net/qjzcy/article/details/131206691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值