python - PyTorch:state_dict 和 parameters() 有什么区别?

标签 python machine-learning deep-learning pytorch

为了在 pytorch 中访问模型的参数,我看到了两种方法:

使用 state_dict并使用 parameters()

我想知道有什么区别,或者一个是好的做法,另一个是坏的做法。

谢谢

最佳答案

parameters() 仅给出模块参数,即权重和偏差。

Returns an iterator over module parameters.

您可以查看参数列表如下:

for name, param in model.named_parameters():
    if param.requires_grad:
        print(name)

另一方面,state_dict返回包含模块的整个状态的字典。检查其 source code它不仅包含对 parameters 的调用,还包含 buffers

Both parameters and persistent buffers (e.g. running averages) are included. Keys are the corresponding parameter and buffer names.

使用以下方法检查 state_dict 包含的所有键:

model.state_dict().keys()

例如,在 state_dict 中,您会发现 bn1.running_meanrunning_var 等条目,它们在 中不存在.parameters().


如果你只想访问参数,你可以简单地使用.parameters(),而对于像在迁移学习中保存和加载模型这样的目的,你需要保存state_dict 不仅仅是参数。

关于python - PyTorch:state_dict 和 parameters() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54746829/

相关文章:

python - Keras:期望 3 维,但得到具有形状的数组 - 密集模型

python - 如何在 scikit-learn 或 Neuraxle 中并行运行 2 个管道?

python - Keras:使用 model.train_on_batch() 和 model.fit() 获得不同的精度。可能是什么原因以及如何解决?

python - 从二维数组python创建直方图

python - 将列表传递给 subprocess.run

python - 将连续日期分组在一起

machine-learning - 神经网络陷入困境

python - python 真实内存与分析内存

algorithm - 什么人工智能最适合学习一个领域

machine-learning - 聊天机器人的文本分类