擅长:python、mysql、java
<p>下面的代码加载一个模型,删除最后一层并添加一个新层作为最后一层</p>
<pre><code>old_model = keras.models.load_model("old_model.h5")
new_model= keras.models.Sequential(old_model.layers[:-1])
new_model.add(keras.layers.Dense(5, activation="sigmoid"))
</code></pre>
<p>您可以使用类似的方法切掉第一层,只拾取最后一层</p>
<pre><code>old_model.layers[N:]
</code></pre>
<p>有比这更好的方法。创建模型的克隆,复制其权重,然后添加新层并训练网络</p>
<pre><code>clone_of_old_model = keras.models.clone_model(old_model)
clone_of_old_model.set_weights(old_model.get_weights())
</code></pre>
<p>我之所以说这种方法更好,是因为如果使用第一段代码,新模型的训练可能会影响旧模型</p>
<p>现在,您可以将这两部分组合起来创建一个新模型</p>
<p>只需记住编译模型,因为您将冻结和解冻层</p>