You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中未保存模型状态,能否在Jupyter下一个单元继续训练神经网络?

当然可以,完全安全!

这其实是Keras里非常常规的操作,你的模型对象会一直保留着当前的训练状态——包括所有层的权重、优化器的动量(比如Adam、SGD这类带动量的优化器的状态)、学习率调度器的当前值这些关键信息。

只要你没做这两件事,直接在下一个Jupyter代码单元调用fit()就能无缝接着之前的30轮继续训练:

  • 没有重新初始化模型(比如重新跑一遍创建模型的代码)
  • 没有修改模型的结构(比如新增/删除层、改动层的参数设置)

举个简单的例子:
假设你上一个单元的代码是:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 创建并编译模型
model = Sequential([
    Dense(64, activation='relu', input_shape=(10,)),
    Dense(32, activation='relu'),
    Dense(2, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 先训练30轮
model.fit(x_train, y_train, epochs=30, validation_data=(x_val, y_val))

那在下一个单元直接这么写就行:

# 继续训练10轮,总训练轮数会变成40
model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val))

如果你想让日志里的轮数显示更清晰(比如明确从第31轮开始,到第40轮结束),可以用initial_epoch参数:

# 明确起始轮数为30,训练到第40轮
model.fit(x_train, y_train, initial_epoch=30, epochs=40, validation_data=(x_val, y_val))

几个需要注意的小细节:

  • 如果你在中间修改了模型结构,比如加了新的层,那必须重新编译模型,这时候之前的训练状态会被重置,相当于从头开始训练了。
  • 要是你重启了Jupyter内核,模型对象就会被销毁,这时候就没法继续了——所以如果训练周期很长,建议定期用model.save()把模型存到本地,防止意外丢失进度。

内容的提问来源于stack exchange,提问作者Dmytro Fedoriuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:16