我尝试在一个与我训练的函数不同的函数中加载一个保存的Tensorflow埃尔莫模型,因为我想使用该模型进行多次预测,而不必每次都训练它。我的(简化)代码如下:
第一个
最后,在训练模型之后,这会给我错误“TypeError:“str”对象不可调用”,并返回以下跟踪:
Traceback (most recent call last):
File "usc_coordinator.py", line 62, in <module>
run_usc_coordinator(fIn, fOut, mode)
File "usc_coordinator.py", line 32, in run_usc_coordinator
user_story_builder(fast_mode, file_in)
File "/home/ubuntu/PA/PA_AI4US/PythonVersion/src/builder.py", line 45, in builder
print('PRED_LABELS: ', predict_labels(lst))
File "/home/ubuntu/PA/PA_AI4US/PythonVersion/src/word_classifier.py", line 161, in predict_labels
loaded_model = tf.keras.models.model_from_json(loaded_model_json, custom_objects={'elmo_embedding': elmo_embedding})
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/saving/model_config.py", line 122, in model_from_json
return deserialize(config, custom_objects=custom_objects)
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/layers/serialization.py", line 171, in deserialize
return generic_utils.deserialize_keras_object(
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 354, in deserialize_keras_object
return cls.from_config(
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 616, in from_config
input_tensors, output_tensors, created_layers = reconstruct_from_config(
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 1214, in reconstruct_from_config
process_node(layer, node_data)
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/functional.py", line 1162, in process_node
output_tensors = layer(input_tensors, **kwargs)
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py", line 776, in __call__
outputs = call_fn(cast_inputs, *args, **kwargs)
File "/home/ubuntu/.local/lib/python3.8/site-packages/tensorflow/python/keras/layers/core.py", line 903, in call
result = self.function(inputs, **kwargs)
File "/home/ubuntu/PA/PA_AI4US/PythonVersion/src/word_classifier.py", line 101, in <lambda>
embedding = Lambda(lambda text, : elmo_embedding(text), output_shape=(MAX_LEN, 1024))(input_text, )
TypeError: 'str' object is not callable
我的版本是:
Python 3.8.10
Keras 2.3.0
Tensorflow 2.3.1
Tensorflow-hub 0.10.0
我猜这个错误是由变量input_text设置为dtype tf. string引起的。但是,我不知道如何在不破坏训练序列的情况下处理这个错误。
我希望有人能帮忙!
2条答案
按热度按时间9gm1akwq1#
这是tensorflow v2.3.1中的一个错误:
加载带有Lambda图层的模型导致“str”对象不可调用异常#46659
https://github.com/tensorflow/tensorflow/issues/46659
b4qexyjb2#
您应该将字符串更改为其他内容,例如,如果我必须计算2+2,则这将是错误的代码:
这说明:
那我们该怎么办?把它转换成别的东西
输出:4个
int =整数,float =浮点数。
编辑:你不能把一些东西转换成其他的东西,比如
这将显示:
y将为[“1”,“2”]
或者,如果您不知道缩写形式,您可以使用完整形式
第32行,'str'是不可调用fast_mode,file_In将是字符串,其他行也是如此