问题描述
我正在构建一个带有多头注意力层的 keras 模型。 我正在尝试从 keras.layers 实现 MultiHeadAttention 层,但是当我运行代码时,我在不同的变量上多次收到以下警告:
"警告:张量流:
以下变量使用了 Lambda 层的调用 (tf.einsum),但是
不存在于其跟踪对象中:
我用来构建模型的代码如下:
model = Sequential()
model.add(LSTM(25,input_shape=(1,240),dropout=0.1))
model.add(Dense(1,activation='sigmoid'))
model.compile(loss='BinaryCrossentropy',optimizer='RMSprop')
model.summary()
model.fit(x_train,y_train,validation_split=0.2,epochs=1000,shuffle=False,verbose=2,callbacks=callbacks)
我的 keras 版本是 2.4.3。有没有人建议如何解决此警告以及它是否有问题?
解决方法
警告大约为 tf.keras.layers.Lambda
。
此 blog 声明
tf.keras.Lambda:注意如果层中涉及到变量 通过此方法创建的变量不会自动添加 到用于梯度计算的变量集。因此,如果有 参数要在自定义层训练,推荐 根据基类自定义模型层
如果您不使用 keras lambda 层,则无需担心。可以忽略警告。 要抑制警告,请使用以下代码:
import tensorflow as tf
tf.get_logger().setLevel('ERROR')