我有一个模型,我在模型本身之外做不同的预处理。
预处理的一部分是使用基于keras的类别编码器,其中:
cat_index = tf.keras.layers.StringLookup(vocabulary=cat_word_list)
cat_encoder = tf.keras.layers.CategoryEncoding(num_tokens=cat_index.vocabulary_size(), output_mode="one_hot")
我应用这个比用
encoded_cat = cat_encoder(cat_index(data['cat_val'])).numpy()
encoded_cat = pd.DataFrame(encoded_cat, columns=['cat_' + str(i) for i in range(len(encoded_cat[0]))]).astype('int64')
data = pd.merge(data, encoded_cat, left_index=True, right_index=True)
data.drop(columns=['cat_val'], inplace=True)
我的Pandas数据框。
现在我想存储我的模型,为了存储模型,我还必须存储2个预处理层cat_index
和cat_encoder
。不幸的是,我无法弄清楚如何将这些层存储在文件系统中。如果我尝试使用保存功能,我会得到
'CategoryEncoding'对象没有'保存'属性
如何将这样的预处理层存储到文件系统中,以便在推理过程中可以重用它?
我想到的一个解决方法是存储cat_word_list并重新创建层,但我希望有一种更基于keras的方法。
1条答案
按热度按时间gdrx4gfi1#
使用
get_config
layers方法获取配置:返回层的配置。
一个层配置是一个Python字典(可序列化),包含一个层的配置。相同的层可以在以后从这个配置中重新示例化(没有它的训练权重)。
例如:
其中应包含重新创建层所需的所有信息:
输出量:
可以按如下方式重新创建层:
各层具有相同的配置,例如
输出量: