Keras kernel_initializer 必须包含在 init_scope 或可调用错误中
Keras kernel_initializer must either be wrapped in an init_scope or callable error
我注意到在层内分配 keras.initializer 会导致错误,声称变量初始值设定项必须包装在 init_scope
或可调用中。但是,我看不出下面的用例与提供的示例有何不同 here。是否有解决此问题的方法,或者我在使用 keras 初始化程序时犯了一些明显的错误?
这是我能想到的最小示例:
import tensorflow as tf
from keras.models import *
from keras.layers import *
from keras.optimizers import *
from tensorflow.keras import initializers
inputs_test=Input((512,512,3))
initializer_truncated_norm = initializers.TruncatedNormal(mean=0, stddev=0.02)
deconv_filter = Conv2DTranspose(3, (2, 2), strides=(2, 2), padding='same', kernel_initializer=initializer_truncated_norm)(inputs_test)
model2 = Model(inputs=inputs_test, outputs=deconv_filter)
optimizer = Adam(lr=1e-4)
model2.compile(optimizer=optimizer, loss='mse')
model2.summary()
这是我在 运行 这样的函数
时得到的确切错误
ValueError: Tensor-typed variable initializers must either be wrapped
in an init_scope or callable (e.g., tf.Variable(lambda : tf.truncated_normal([10, 40]))
) when building functions. Please file
a feature request if this restriction inconveniences you.
我运行你的例子没有错误。 tf==2.3.1, keras==2.4.0
。
还在 Colab 中使用 tf==2.0
进行了尝试,它再次运行正常。建议你升级到最新的TF再试试
同时将您的导入从 from keras
更改为 from tensorflow.keras
如果仍然失败 - post 完整的错误堆栈和版本信息。
我注意到在层内分配 keras.initializer 会导致错误,声称变量初始值设定项必须包装在 init_scope
或可调用中。但是,我看不出下面的用例与提供的示例有何不同 here。是否有解决此问题的方法,或者我在使用 keras 初始化程序时犯了一些明显的错误?
这是我能想到的最小示例:
import tensorflow as tf
from keras.models import *
from keras.layers import *
from keras.optimizers import *
from tensorflow.keras import initializers
inputs_test=Input((512,512,3))
initializer_truncated_norm = initializers.TruncatedNormal(mean=0, stddev=0.02)
deconv_filter = Conv2DTranspose(3, (2, 2), strides=(2, 2), padding='same', kernel_initializer=initializer_truncated_norm)(inputs_test)
model2 = Model(inputs=inputs_test, outputs=deconv_filter)
optimizer = Adam(lr=1e-4)
model2.compile(optimizer=optimizer, loss='mse')
model2.summary()
这是我在 运行 这样的函数
时得到的确切错误ValueError: Tensor-typed variable initializers must either be wrapped in an init_scope or callable (e.g.,
tf.Variable(lambda : tf.truncated_normal([10, 40]))
) when building functions. Please file a feature request if this restriction inconveniences you.
我运行你的例子没有错误。 tf==2.3.1, keras==2.4.0
。
还在 Colab 中使用 tf==2.0
进行了尝试,它再次运行正常。建议你升级到最新的TF再试试
同时将您的导入从 from keras
更改为 from tensorflow.keras
如果仍然失败 - post 完整的错误堆栈和版本信息。