Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pytorch CNN模型的参数返回无_Pytorch_Conv Neural Network_Federated Learning - Fatal编程技术网

Pytorch CNN模型的参数返回无

Pytorch CNN模型的参数返回无,pytorch,conv-neural-network,federated-learning,Pytorch,Conv Neural Network,Federated Learning,我创建了一个CNN模型,像这样global\u model=CNNMnist(args=args)。然后我将其发送到设备,将其设置为训练。然后,我训练我的本地模型,收集本地的_权重和平均值,得到更新的全局_模型。 现在我正试图从.parameters()函数中获取项目,但得到的只是None作为item.grad。当我对本地_模型做同样的事情时,我得到了期望的输出。我做错了什么 global_model.to(device) global_model.train() ...............

我创建了一个CNN模型,像这样
global\u model=CNNMnist(args=args)
。然后我将其发送到设备,将其设置为训练。然后,我训练我的本地模型,收集本地的_权重和平均值,得到更新的全局_模型。 现在我正试图从
.parameters()
函数中获取项目,但得到的只是
None
作为
item.grad
。当我对本地_模型做同样的事情时,我得到了期望的输出。我做错了什么

global_model.to(device)
global_model.train()
...................
global_weights = average_weights(local_weights)
global_model.load_state_dict(global_weights)
last_update = []
for item in global_model.parameters():
    last_update.append(copy.deepcopy(item.grad))
    print(item.grad)

Output: None None None None None None None None

任何帮助都将不胜感激。

您正在查看从
状态加载的值\u dict
-渐变不会保存在那里。请在呼叫
后退()
之后和
归零()之前打印
.grad
,谢谢您的回复。这很有效。但是我还有另一个问题,
backward()
只出现在本地模型更新中。全局_模型通过平均从局部_模型得到的更新权重进行更新。如果不在全局_模型中使用
backward()
,如何获得全局_模型的梯度?