from torch import nn
for layer in model.children():
if isinstance(layer, nn.Linear):
print(layer.state_dict()['weight'])
print(layer.state_dict()['bias'])
def to_obj(self):
data = {}
for lname,child in self.named_children():
ldict = {}
data[lname] = ldict
for key,tens in child.state_dict().items():
ldict[key] = tens.numpy().tolist()
return data
然后保存使用
from json import dump
with open(FULLPATH,mode='w') as out:
dump(model.to_obj(),out)
4条答案
按热度按时间bvn4nwqk1#
可以恢复模型中每个线性层的命名参数,如下所示:
rt4zxlrg2#
从图层提取值的步骤。
可以使用要提取的神经元值来代替0索引。
8ftvxx2r3#
从完整的模型来看,不存在,但是你可以得到特定
Module
的state_dict()
,然后你会得到一个dict
以及weight
和bias
:在您的代码中的等效代码为:
9rnv2umw4#
当我尝试在pytorch中创建原型并在C++ / Eigen中重新实现时,我遇到了同样的问题。
这是我在给我的模型类添加一个方法时得到的结果:
然后保存使用
我的情况很简单,所以你可能要区分孩子的类型...