python - ValueError:变量的初始化程序来自控制流构造内部,例如循环或条件。使用 lambda 作为初始化器
问题描述
这是我在 Keras 的控制流中声明 LSTM 层时遇到的问题的简化版本。该行K.variable(kernel_init([3,3], dtype='float64'), dtype='float64',name='kernel')
是Keras base_layer.py的一部分。因此这条线不能改变。根据这个问题的推荐,我尝试创建一个 LSTM 网络并得到相同的错误。我把它归结为下面的简化代码。
以下代码执行导致错误
import tensorflow as tf
from keras import backend as K
def cond(i):
return i < 3
def body(i):
kernel_init = lambda x, dtype='float64' : tf.random.normal(x, dtype=dtype)
vars = K.variable(kernel_init([3,3], dtype='float64'),
dtype='float64',
name='kernel')
print("succesfully variable declared")
return (i+1,vars)
tf.while_loop(cond, body, [0])
ValueError:变量 while/kernel/ 的初始化程序来自控制流构造内部,例如循环或条件。在循环或条件中创建变量时,使用 lambda 作为初始化器。
标记多线程,因为上面的代码最初在并行线程中运行。
解决方案
推荐阅读
- java - 如果不在 Java 中的 {...} 内,则匹配空格的正则表达式
- dashboard - 仪表板上的节点红色图像
- git - 合并分支时,Git 不显示已删除行的当前/传入更改
- mapquest - 无法执行 mapquest.com searchQuery
- django - RSS 提要中没有更新日期
- javascript - 如何在循环中使用 Jquery/JS 暂停和恢复 setInterval 函数?
- python - 如何在 SQL 和 pandas 中获得相同的 percent_rank?
- c++ - OpenGL 不渲染正方形
- c++ - PostgreSQL C++ (pqxx) 和设置值(如果不是 NULL)
- python - 使用列表的每个元素从循环创建列表