TimeMixer icon indicating copy to clipboard operation
TimeMixer copied to clipboard

关于down_sampling_method=conv时报错RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

Open KIKI0608 opened this issue 10 months ago • 2 comments

作者您好!感谢开源。

我在运行代码时将down_sampling_method设置为conv,结果发现报错RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same。分析后,我认为def __multi_scale_process_inputs函数中nn.Conv1d的参数并没有随TIMEMIXER模型初始化时被一起初始化,原因是当执行 model = Model() 来实例化 Model 类时,Python 会调用 Model 类的 init 方法(若未定义,会调用其父类的 init 方法)。不过,因为 torch.nn.Conv1d 是在 __multi_scale_process_inputs 方法里实例化的,在 init 方法执行期间它不会被初始化,因为 __multi_scale_process_inputs 方法还未被调用。反之,在每调用一次forecast执行前向传播时,__multi_scale_process_inputs被执行一次,对应的nn.Conv1d的参数被随机初始化一次,这意味着nn.Conv1d的参数在整个过程中都仅仅被训练到一个batch_size的样本样本。

Image

KIKI0608 avatar Mar 26 '25 13:03 KIKI0608