我有一门python课
class DeepLearningBot:
stopwords = ['i', 'am', 'a',
'to', 'is', 'do', 'in', 'of']
labelModelPath = os.path.join(dirName, "..\config\labels_mapping.pkl")
modelPath = os.path.join(dirName, "models/elmo-model-bilstm2.h5")
modelBlstm = {}
modelLabel = {}
@staticmethod
def init():
DeepLearningBot.modelBlstm = tf.keras.models.load_model(DeepLearningBot.modelPath,
custom_objects={
'elmo': hub.Module("https://tfhub.dev/google/elmo/2", trainable=False),
'tf': tf
})
# mapping model of lables and positions
DeepLearningBot.modelLabel = joblib.load(
DeepLearningBot.labelModelPath)
@staticmethod
def process(query: str) -> Intent:
intent = DeepLearningBot.__predict(query)
return intent
def __predict(query: str) -> Intent:
with tf.Session() as session:
K.set_session(session)
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
predictions = DeepLearningBot.modelBlstm.predict([query])
intent = None
return intent
现在在我的main.py中
我愿意
DeepLearningBot.init()
在我的api层,我使用
intent = DeepLearningBot.process(query)
但它显示了错误
predictions = DeepLearningBot.modelBlstm.predict([query])
AttributeError: 'dict' object has no attribute 'predict'
它仍在访问空数据库 {}
作为 modelBlstm
变量
如果我
modelBlstm:Any
上面说 DeepLearningBot
没有 modelBlstm
变量
如果我调试代码并在其中放置断点 init
方法将正确的对象指定给它 modelBlstm
有什么帮助吗?
更新1
我试过了 @classmethod
结束 init
及 process
而不是 @staticmethod
并且通过了考试 cls
param作为第一个要运行的参数。
但仍然不起作用。
那就不打电话了
DeepLearningBot.init()
从main.py,尝试从 process()
方法本身,然后它就起作用了。
但是我想要 init()
方法由其他类或main.py从同一类外部调用
暂无答案!
目前还没有任何答案,快来回答吧!