我想在队列中训练不同的 Keras 模型(或者在某些情况下只是多次运行同一模型来比较结果)(如果重要的话,使用 TensorFlow 作为后端)。在我当前的设置中,我在一个大的 python 脚本中创建并拟合所有这些模型,例如(以简化的方式):
for i in range(10):
model = create_model(i)
model.compile(...)
model.fit(...)
some_function_to_save_model(model)
Run Code Online (Sandbox Code Playgroud)
该create_model(i)
函数为第'次运行创建特定模型i
。例如,这包括更改输入/标签的数量。每次运行的编译函数也可以不同(例如不同的优化器)。
虽然这段代码对我有用并且我没有发现任何问题,但我不清楚这是否是正确的方法,因为所有模型都驻留在同一个 TensorFlow Graph 中(如果我理解 Keras / TensorFlow 正确协同工作的方式) 。我的问题是:
i
“th run”对i+1
“th run”产生任何影响)keras.backend.clear_session()
运行,那么在这种情况下清除会话/删除图形是否有任何影响?与当前的设置相比,这在某种程度上是否有利?some_function_to_save_model()
for
再说一遍:如果所有模型都挤在一个脚本中,而不是每个模型仅使用一个脚本来独立创建和训练模型,那么我并不担心由于创建混乱的代码而可能出现的问题。
不幸的是我没有找到一个简洁的答案(只有使用这两种方法的建议)。也许这里有人可以启发我?
编辑:也许我应该更精确。基本上我想对以下三种情况的差异(优点和缺点)进行技术解释:
创建和训练.py:
for i in range(10):
model = create_model(i)
model.compile(...)
model.fit(...)
some_function_to_save_model(model)
Run Code Online (Sandbox Code Playgroud)创建和训练.py:
for i in range(10):
model = create_model(i)
model.compile(...)
model.fit(...)
some_function_to_save_model(model)
# clear session:
keras.backend.clear_session()
Run Code Online (Sandbox Code Playgroud)create_and_train_i.py,其中 i 在 [0, 1, ..., 9] 中:
i = 5 # (e.g.)
model = create_model(i)
model.compile(...)
model.fit(...)
some_function_to_save_model(model)
Run Code Online (Sandbox Code Playgroud)
例如循环遍历这些的 bash 脚本
归档时间: |
|
查看次数: |
925 次 |
最近记录: |