我有一个分类问题,我正在使用一个小数据集(~4000个实例)。为了提高性能,我想在比我更大的数据集上训练LSTM,保存这个网络的权重,并将权重加载为一种“热启动”,以便在更小的数据集上训练网络,通过Keras的load_model
方法。
然而,我遇到了一个问题。我想要进行预训练的较大数据集只有3个类要预测,而我想要使用权重的较小数据集有5个类。显然,当我将权重加载到较小数据集的体系结构中时,我会在尝试拟合此模型时收到错误。我无法将任何图层的input_shape
或output_shape
设置为预训练网络,至少不是我尝试过的方式。也就是说,如果我执行以下操作:
from keras.models import load_model
model = load_model('path/to/model_weights.h5')
print model.layers
# [<keras.layers.recurrent.LSTM at 0x1197d10d0>,
# <keras.layers.core.Dense at 0x11d9d6f50>,
# <keras.layers.core.Activation at 0x120beb810>]
model.layers[1].output_shape = (None, 5) # Trying to set different output dimension here
AttributeError Traceback (most recent call last)
<ipython-input-21-4f1957074c0c> in <module>()
----> 1 model.layers[1].output_shape = (None, 5)
AttributeError: can't set attribute
我得到上面列出的AttributeError
。还有另一种方法吗?任何帮助将不胜感激。