赞
踩
需要使用rasa_nlu来搭建对话程序,但是介于“人见人爱”的tensorflow总喜欢给新老用户一些“不一样”的感受,再加上sara_nlu的维护者貌似还没有更新tensorflow2.X下的库,所以如果你像笔者一样,直接安装tensorflow的最新版本,那么直接运行一下程序可能会报错:
from rasa_nlu.training_data import load_data from rasa_nlu.model import Trainer from rasa_nlu import config from rasa_nlu.model import Interpreter def train_horoscopebot(data_json, config_file, model_dir): training_data = load_data(data_json) trainer = Trainer(config.load(config_file)) trainer.train(training_data) model_directory = trainer.persist(model_dir, fixed_model_name="horoscopebot") def predict_intent(text): interpreter = Interpreter.load("./models/nlu/default/horoscopebot") print(Interpreter.parse(text)) train_horoscopebot("./data/data.json", "./config.json", "./model/nlu")
然后报错一堆=_=,错误信息为无法找到tensorflow的某些方法,很显然是tensorflow版本的锅…
23行 AttributeError: module ‘tensorflow’ has no attribute ‘set_random_seed’
解决方法: 23行的import tensorflow as tf
改成
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
278行 AttributeError: module ‘tensorflow.compat.v1’ has no attribute ‘contrib’
解决方法:278行的 reg = tf.contrib.layers.l2_regularizer(self.C2)
改成
reg = tf.nn.l2_loss
尽管最后又多了一些警告,但是程序可以成功运行了。
......(若干WARNING =_=)
Epochs: 100%|██████████| 300/300 [00:00<00:00, 573.16it/s, loss=0.575, acc=1.000]
反正是成功运行了,如果嫌WARNING看着烦,可以加入一下语句来屏蔽WARNING
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = "2"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。