Keras model.layers[i].get_weights()返回空列表
您好,我有下面的代码,我正在将预先保存的自定义权重从.cpkt文件加载到resnet模型中 ''' ''' 如何从保存的.cpkt文件中获取逐层权重和偏差 非常感谢 第一次修正: 您没有正确使用多重赋值,更正如下:Keras model.layers[i].get_weights()返回空列表,keras,keras-layer,Keras,Keras Layer,您好,我有下面的代码,我正在将预先保存的自定义权重从.cpkt文件加载到resnet模型中 ''' ''' 如何从保存的.cpkt文件中获取逐层权重和偏差 非常感谢 第一次修正: 您没有正确使用多重赋值,更正如下: all_weights = [], all_biases = [] # wrong all_weights, all_biases = [], [] # correct way to use multi-assignment in python 第二次更正: 并非所有层都有权重,例
all_weights = [], all_biases = [] # wrong
all_weights, all_biases = [], [] # correct way to use multi-assignment in python
第二次更正:
并非所有层都有权重,例如:输入、退出等。因此,当您尝试获取这些层的节点权重和偏移权重时,您将出现错误,指示要解压缩的值很少,下面的代码应该可以完成这项工作
for layer in model.layers:
try:
w,b = layer.get_weights()
all_weights.append(w)
all_biases.append(b)
except:
pass # not all layers have weights !
如果您只想获得预训练模型(res net)的权重,那么在运行上述代码之前,请按如下方式定义模型变量:
model = keras.applications.ResNet50(input_tensor=input_tensor,weights = 'imagenet', include_top = False)
哪一层不返回权重?你应该考虑不是所有的层都有权,没有一层。它们都返回空列表。
model = keras.applications.ResNet50(input_tensor=input_tensor,weights = 'imagenet', include_top = False)