在Keras中可以保存训练好的层并在以后使用吗?

我之前没有使用过Keras,现在在考虑是否要使用它。

我想保存一个训练好的层,以便以后使用。例如:

  1. 我训练了一个模型。
  2. 然后,我得到了一个训练好的层 t_layer
  3. 我有另一个需要训练的模型,其中包含 layer1layer2layer3 这些层。
  4. 我想使用 t_layer 作为 layer2,并且不更新这个层(即 t_layer 不再学习)。

这可能是一个奇怪的尝试,但我很想试试。在Keras中这是可能的吗?


回答:

是的,这是可能的。

你可能需要保存层的权重和偏置,而不是保存层本身,但这是可以做到的。

Keras还允许你保存整个模型

假设你有一个名为 model 的变量模型:

weightsAndBiases = model.layers[i].get_weights()

这是一个numpy数组的列表,很可能包含两个数组:权重和偏置。你可以简单地使用 numpy.save() 来保存这两个数组,然后你可以创建一个类似的层并为其设置权重:

from keras.layers import *from keras.models import Modelinp = Input(....)    out1 = SomeKerasLayer(...)(inp)  out2 = AnotherKerasLayer(....)(out1).... model = Model(inp,out2)#以上是创建模型的常规过程    #假设第二层是你想要的层(你也可以使用名称)    weights = numpy.load(...path to your saved weights)    biases = numpy.load(... path to your saved biases)model.layers[2].set_weights([weights,biases])

你可以使层不可训练(必须在模型编译之前完成):

model.layers[2].trainable = False    

然后你编译模型:

model.compile(.....)    

这样,你就得到了一个模型,其中一个层是不可训练的,并且其权重和偏置由你定义,来自其他地方。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注