Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

问题请教 #11

Open
MrLangZe opened this issue Aug 1, 2024 · 3 comments
Open

问题请教 #11

MrLangZe opened this issue Aug 1, 2024 · 3 comments

Comments

@MrLangZe
Copy link

MrLangZe commented Aug 1, 2024

请问下,训练用的sh文件中的参数,可以自行修改吗?如果可以,具体的参数有更详细的说明吗?谢谢

@lss-1138
Copy link
Owner

lss-1138 commented Aug 5, 2024

可以修改的,主要修改这几个参数即可。

关于SegRNN模型的参数:

  1. d_model: 设置RNN中hidden size大小
  2. dropout:设置预测层的丢弃率
  3. rnn_type :设置使用的RNN类型,包括gru、lstm、rnn,建议gru
  4. dec_way :设置解码方式,包括pmf和rmf,建议pmf,并行预测
  5. channel_id :是否增加通道标识符,1为开启,0为关闭
  6. seg_len:设置分段长度,需要能被seq_len 和 pred_len 整除。

关于数据集的参数:

  1. enc_in: 数据集的变量(通道)数
  2. seq_len: 模型的输入长度,即历史回望窗口长度
  3. pred_len:模型的输出长度,即前向预测的长度

关于训练:
batch_size、learning_rate 、train_epochs 、patience等,可自行设置。

@MrLangZe
Copy link
Author

感谢您的解答!
另外想请问一下您使用的是何种训练硬件配置,训练时长通常是多少?
我在训练前将您的exp_main.py文件代码38行左右的位置作了如下修改
`class Exp_Main(Exp_Basic):
def init(self, args):
super(Exp_Main, self).init(args)

def _build_model(self):
    model_dict = {
        'Autoformer': Autoformer,
        'Transformer': Transformer,
        'Informer': Informer,
        'DLinear': DLinear,
        'NLinear': NLinear,
        'Linear': Linear,
        'PatchTST': PatchTST,
        'VanillaRNN': VanillaRNN,
        'SegRNN': SegRNN
    }
    model = model_dict[self.args.model].Model(self.args).float()

    # use cuda ======
    device = torch.device("cuda")
    model.to(device)
    # ======

    if self.args.use_multi_gpu and self.args.use_gpu:
        model = nn.DataParallel(model, device_ids=self.args.device_ids)
    return model`

然后在训练速度上似乎比未修改前有一些提升,不确定是否是因为这样做让cuda能直接用于整个model的所有参数训练过程。

@lss-1138
Copy link
Owner

我之前完成这种工作时的环境是两张T4,现在是单张4090.

理论上,你新增的这两行是没有什么用处的,因为exp/exp_basic.py第10行已经在实例化模型后to(self.device)了。

self.model = self._build_model().to(self.device)

我在我的环境下试了下你新增的这两行,在cuda环境下,Weather数据集上单个epoch速度从12s增加至18s. 这个现象也有点奇怪。

个人建议是,最好不要修改这里的代码,以免发生其他未知问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants