Snips-NLU 0.20.2训练引擎时出现AttributeError:numpy无float属性
问题原因:AttributeError: module 'numpy' has no attribute 'float'
问题场景
- 系统:Windows 10
- 环境:Python 3.8.15、numpy 1.24.0、snips-nlu 0.20.2
- 触发操作:执行训练命令时报错
(nlpenv) C:\Users\one>python -m snips_nlu train sample_dataset.json nlu_engine
报错堆栈
Create and train the engine... Traceback (most recent call last): File "C:\Users\one\.conda\envs\nlpenv\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\one\.conda\envs\nlpenv\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\__main__.py", line 6, in <module> main() File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\cli\__init__.py", line 52, in main args.func(args) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\cli\training.py", line 23, in _train return train( File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\cli\training.py", line 56, in train engine = SnipsNLUEngine(config, random_state=random_state).fit(dataset) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\common\log_utils.py", line 30, in wrapped res = fn(*args, **kwargs) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\nlu_engine\nlu_engine.py", line 126, in fit recycled_parser.fit(dataset, force_retrain) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\common\log_utils.py", line 30, in wrapped res = fn(*args, **kwargs) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\intent_parser\probabilistic_intent_parser.py", line 77, in fit self.intent_classifier.fit(dataset) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\common\log_utils.py", line 30, in wrapped res = fn(*args, **kwargs) File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\snips_nlu\intent_classifier\log_reg_classifier.py", line 67, in fit from sklearn.linear_model import SGDClassifier File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\sklearn\linear_model\__init__.py", line 12, in <module> from ._least_angle import (Lars, LassoLars, lars_path, lars_path_gram, LarsCV, File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\sklearn\linear_model\_least_angle.py", line 30, in <module> method='lar', copy_X=True, eps=np.finfo(np.float).eps, File "C:\Users\one\.conda\envs\nlpenv\lib\site-packages\numpy\__init__.py", line 284, in __getattr__ raise AttributeError("module {!r} has no attribute " AttributeError: module 'numpy' has no attribute 'float'
原因分析
- Numpy API变更:numpy 1.24.0正式移除了
numpy.float这类旧的数值类型别名,这些别名在numpy 1.20版本后就被标记为弃用,1.24版本彻底删除。 - 依赖版本不兼容:snips-nlu 0.20.2依赖的scikit-learn版本较低,该版本的scikit-learn代码中仍在使用
np.float这种已被numpy移除的API,导致调用时触发AttributeError。
内容的提问来源于stack exchange,提问作者YuMei
相关产品推荐
相关产品推荐

