我在我的简单编码器模型中得到 "Tensor.op is meaningless when eager execution is enabled."。 (TF 2.0)
I'm getting "Tensor.op is meaningless when eager execution is enabled." in my simple encoder model. (TF 2.0)
下面给出了我的编码器模型的代码,我使用函数 API(TF 2.0)
制作了它
embed_obj = EndTokenLayer()
def encoder_model(inp):
input_1 = embed_obj(inp)
h = Masking([(lambda x: x*0)(x) for x in range(128)])(input_1)
lstm1 , state_h, state_c = LSTM(512, return_sequences=True, return_state=True)(h)
model = Model(inputs=input_1, outputs=[lstm1, state_h, state_c])
return model
当我打电话给我的模型时:
for x,y in train.take(1):
k = x
model = encoder_model(k)
我收到以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-98-46e9c9596137> in <module>()
2 for x,y in train.take(1):
3 k = x
----> 4 model = encoder_model(k)
7 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in op(self)
1111 def op(self):
1112 raise AttributeError(
-> 1113 "Tensor.op is meaningless when eager execution is enabled.")
1114
1115 @property
AttributeError: Tensor.op is meaningless when eager execution is enabled.
在 TF2 中,可以使用装饰器构建静态图(防止使用动态图急切执行)。
试试@tf.function装饰器
@tf.function
def encoder_model(inp):
input_1 = embed_obj(inp)
h = Masking([(lambda x: x*0)(x) for x in range(128)])(input_1)
lstm1 , state_h, state_c = LSTM(512, return_sequences=True, return_state=True)(h)
model = Model(inputs=input_1, outputs=[lstm1, state_h, state_c])
return model
然后调用函数
for x,y in train.take(1):
k = x
model = encoder_model(k)
下面给出了我的编码器模型的代码,我使用函数 API(TF 2.0)
制作了它embed_obj = EndTokenLayer()
def encoder_model(inp):
input_1 = embed_obj(inp)
h = Masking([(lambda x: x*0)(x) for x in range(128)])(input_1)
lstm1 , state_h, state_c = LSTM(512, return_sequences=True, return_state=True)(h)
model = Model(inputs=input_1, outputs=[lstm1, state_h, state_c])
return model
当我打电话给我的模型时:
for x,y in train.take(1):
k = x
model = encoder_model(k)
我收到以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-98-46e9c9596137> in <module>()
2 for x,y in train.take(1):
3 k = x
----> 4 model = encoder_model(k)
7 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in op(self)
1111 def op(self):
1112 raise AttributeError(
-> 1113 "Tensor.op is meaningless when eager execution is enabled.")
1114
1115 @property
AttributeError: Tensor.op is meaningless when eager execution is enabled.
在 TF2 中,可以使用装饰器构建静态图(防止使用动态图急切执行)。 试试@tf.function装饰器
@tf.function
def encoder_model(inp):
input_1 = embed_obj(inp)
h = Masking([(lambda x: x*0)(x) for x in range(128)])(input_1)
lstm1 , state_h, state_c = LSTM(512, return_sequences=True, return_state=True)(h)
model = Model(inputs=input_1, outputs=[lstm1, state_h, state_c])
return model
然后调用函数
for x,y in train.take(1):
k = x
model = encoder_model(k)