keras - 在 Keras 中使用 ModelCheckpoint 时的最大递归深度错误
问题描述
我正在训练一个具有约 30,000 个参数的模型,并且我想使用 ModelCheckpoint 回调在每个 epoch 之后保存模型的状态。
目前,我无法保存模型。我收到以下错误:
RuntimeError: maximum recursion depth exceeded while calling a Python object
我尝试了在其他地方(例如此处)找到的解决方案,但没有帮助。
import sys
sys.setrecursionlimit(10000)
我该如何解决这个问题?
解决方案
啊哈!我在这里找到了线索...
...并对其进行了修改。我有一个最初是这样编写的 Lambda 层:
def sampling(args):
z_mean, z_log_sigma = args
epsilon = K.random_normal(shape=((self.batch_size - self.n_lags), self.hid_dim_2), mean=0., stddev=1.)
return z_mean + z_log_sigma * epsilon
zlambda = Lambda(sampling, output_shape=(self.hid_dim_2,))([z_mean, z_log_sigma])
我将它移到了shape
一个全局变量中,瞧!
shape_val = ((self.batch_size - self.n_lags), self.hid_dim_2) #Need this to be a global variable, otherwise Recursion Depth Error of death.
def sampling(args):
z_mean, z_log_sigma = args
epsilon = K.random_normal(shape=shape_val, mean=0., stddev=1.)
return z_mean + z_log_sigma * epsilon
zlambda = Lambda(sampling, output_shape=(self.hid_dim_2,))([z_mean, z_log_sigma]) #Saving and loading Lambda layers is weird.
推荐阅读
- c# - DataTable 选择返回 DBNull 而不是字符串值
- angular - 在执行其他代码之前确保 for 循环中的 observables 全部完成
- python - docopt 中的依赖选项
- ruby - 验证用户输入的 PIN
- python - 如何使用 python websockets 安全地连接到 Bitstamp Websocket v2.0 API?证书验证错误
- reactjs - 如何将 CRA 流程增量迁移到打字稿
- ios - 如何使用获取结果控制器获取对象列表添加其他对象?
- symfony - Symfony 4.2 / Messenger - 有没有一种方法可以只发送到通配符不匹配的项目?
- compilation - 编译时参数类型不兼容
- python - 如何制作利萨如曲线的动画