python - LSTM 的 model.reset_states 会影响模型中的任何其他非 LSTM 层吗?
问题描述
我正在使用 LSTM 的有状态模式,当我处理我的序列数据时tf.keras
,我需要手动执行,如此处所述。似乎通常人们会这样做,但在我的情况下,我的 LSTM 层嵌入在一个更复杂的网络中,其中包括各种其他层,如 Dense、Conv 等。我的问题是,如果我只是调用嵌入了 LSTM(并且只有一个 LSTM)的主模型,我是否应该担心重置会影响模型中的其他层,例如 Dense 或 Conv 层?寻找 LSTM 层并将调用隔离到该层会更好吗?reset_states
model.reset_states()
model.reset_states()
reset_states
解决方案
任何具有可设置属性的层都 stateful
受reset_states()
; 该方法遍历每一层,检查它是否有stateful=True
——如果有,调用它的reset_states()
方法;见源。
在 Keras 中,所有循环层,包括ConvLSTM2D,都有一个可设置的stateful
属性——我不知道其他的。tensorflow.keras
但是,有很多自定义层实现可能;您可以使用下面的代码来确定:
def print_statefuls(model):
for layer in model.layers:
if hasattr(layer, 'reset_states') and getattr(layer, 'stateful', False):
print(layer.name, "is stateful")
推荐阅读
- java - 存储的drawable在Android中发生了变化
- clojure - 如何使用 lein exec 要求 clojure.java.io?
- python-3.x - IDLE 中的光标位置
- c++ - 提示用户输入一个单词,然后检查它是否有双字符
- javascript - 在视图和 JS 之间传递变量;姜戈
- sql - 如何在 WHERE 子句中将 SQL OR 运算符与 IN SELECT 子查询一起使用?
- android - vs代码中的扩展不加载
- full-text-search - 电报组过滤
- ffmpeg - 使用 ffmpeg 为 Cloud Speech-to-Text 录制流音频
- php - Laravel Passport API 上传多张图片