Keras图层重量形状兼容性问题?

时间:2020-06-29 06:54:53

标签: tensorflow machine-learning keras layer keras-layer

我正在训练我的网络,然后使用c ++进行一些修剪。在那之后,我想使用修剪过的砝码。我据此更改了Keras的模型架构。但是当我在输出层上有一个权重连接时,我遇到了一个问题。 Keras set_weights给我一个错误,这是不正确的。 ww1的形状为(1,1),而bb1的形状为(1,)。我确定我没有做错什么,所以我尝试在最后一个隐藏层上使用2个节点,并根据此节点更改了模型并提供了数据。现在正在工作。但是问题出在最后一个隐藏层上的一个节点上。 Set_weights给我的形状兼容性错误不正确。 注意:ww1是这里的砝码,我打印的形状是(1,1)。 bb1用于偏置,其形状为(1,) 如果将偏差bb3重塑为(1,1),则将得到与提供的权重形状(1、1)错误不兼容的图层权重形状(1,)。因此,要么重塑为(1,)要么(1,1)不起作用。 请指出我的错误。 “

文件“ / home / sher / lib2”,第205行,在 model.get_layer('three')。set_weights(np.array([ww3,bb3]))

文件“ /home/sher/.local/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py”,行1540,在set_weights中 '形状%s'%(ref_shape,weight.shape))

ValueError:图层权重形状(1,1)与提供的权重形状(1,)不兼容 “

 model.get_layer('one').set_weights(np.array([ww1, bb1]))
 model.get_layer('two').set_weights(np.array([ww2, bb2]))
 model.get_layer('three').set_weights(np.array([ww3, bb3])) 

编辑:问题解决了,尽管我不知道以前的方法有什么问题:我没有在set_weights函数中结合使用bias和weight np数组,而是将它们放入列表并将该列表传递给set_weight。

    dat_list = []
    dat_list.append(ww3)
    dat_list.append(bb3)
    model.get_layer('one').set_weights(np.array([ww1, bb1]))
    model.get_layer('two').set_weights(np.array([ww2, bb2]))
    model.get_layer('three').set_weights(dat_list) 

0 个答案:

没有答案