【发布时间】:2021-05-02 15:02:41
【问题描述】:
我正在使用以下函数来扁平化网络:
#############################################################################
# Flattening the NET
#############################################################################
def flattenNetwork(net):
flatNet = []
shapes = []
for param in net.parameters():
#if its WEIGHTS
curr_shape = param.cpu().data.numpy().shape
shapes.append(curr_shape)
if len(curr_shape) == 2:
param = param.cpu().data.numpy().reshape(curr_shape[0]*curr_shape[1])
flatNet.append(param)
elif len(curr_shape) == 4:
param = param.cpu().data.numpy().reshape(curr_shape[0]*curr_shape[1]*curr_shape[2]*curr_shape[3])
flatNet.append(param)
else:
param = param.cpu().data.numpy().reshape(curr_shape[0])
flatNet.append(param)
finalNet = []
for obj in flatNet:
for x in obj:
finalNet.append(x)
finalNet = np.array(finalNet)
return finalNet,shapes
上述函数将所有权重作为网络的numpy 列向量finalNet 和shapes(列表)返回。我想看看权重修改对预测准确性的影响。所以,我改变了权重。如何将此修改后的权重向量复制回原始网络?请帮忙。谢谢。
【问题讨论】: