TensorFlow 2:运行时错误:无法对稀疏变量使用约束函数
我使用TensorFlow 2:运行时错误:无法对稀疏变量使用约束函数,tensorflow,keras,tensorflow2.0,keras-layer,keras-2,Tensorflow,Keras,Tensorflow2.0,Keras Layer,Keras 2,我使用嵌入\u约束定义嵌入对象: from tensorflow.keras.layers import Embedding from tensorflow.keras.constraints import UnitNorm . . . emb = Embedding(input_dim, output_dim, name='embedding_name', embeddings_constraint=UnitNorm(axis=1)) . . . 在代码的后面,当我想训练包含emb的模型时,
嵌入\u约束定义嵌入对象
:
from tensorflow.keras.layers import Embedding
from tensorflow.keras.constraints import UnitNorm
. . .
emb = Embedding(input_dim, output_dim, name='embedding_name', embeddings_constraint=UnitNorm(axis=1))
. . .
在代码的后面,当我想训练包含emb
的模型时,我从函数模型中得到一个异常。fit
:
RuntimeError: Cannot use a constraint function on a sparse variable.
但是,当我不对emb
施加嵌入约束时,代码不会抛出错误。此外,我在TF 1中尝试了这一点,并且它也很好地工作(有和没有嵌入\u约束
)。根据a,这似乎是TF2错误,尽管没有提出有效的解决方案
有什么办法可以解决这个问题吗?这个问题的解决方法是直接调用约束,如下所示:
从tensorflow.keras.layers导入嵌入
从tensorflow.keras.constraints导入UnitNorm
. . .
emb=嵌入(输入尺寸、输出尺寸、名称=”嵌入名称“)
标准层=单位标准(轴=1)
norm_嵌入=norm_层(emb(嵌入id_输入))
. . .