to_categorical()缺少1个必需的位置参数:' nb_classes' - tflearn

时间:2017-10-24 00:26:42

标签: typeerror tflearn

我试图在jupyter笔记本上从https://github.com/tflearn/tflearn/blob/master/examples/nlp/bidirectional_lstm.py运行示例。由于我是Tflearn,Jupyter和DNN的新手,我无法调试错误是什么以及如何解决它。错误如下:

`TypeError                                 Traceback (most recent call last)
<ipython-input-1-fa67bb48a391> in <module>()
     38 testX = pad_sequences(testX, maxlen=100, value=0.)
     39 # Converting labels to binary vectors
---> 40 trainY = to_categorical(trainY)
     41 testY = to_categorical(testY)
     42 

TypeError: to_categorical() missing 1 required positional argument: 'nb_classes'`

我也无法理解它是如何加载数据集的。谢谢!

2 个答案:

答案 0 :(得分:1)

在TFLearn的最新 stable 版本(撰写本文时为0.3.2),与pip一起安装时,参数nb_classes是必要的:

 
import tflearn
from tflearn.data_utils import to_categorical
from tflearn.datasets import imdb
train, test, _ = imdb.load_data(path = 'imdb.pkl', n_words = 10000, valid_portion = 0.1)
trainX, trainY = train
testX, testY = test

trainY[0:5]
# [0, 0, 0, 1, 0]

# this gives error:
trainY = to_categorical(trainY)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-4a293ba390bc> in <module>()
----> 1 trainY = to_categorical(trainY) #, nb_classes=2)

TypeError: to_categorical() takes exactly 2 arguments (1 given)

基本上,尽管措辞不同,但这与您获得的错误信息相同;包括nb_classes=2解析它:

trainY = to_categorical(y=trainY, nb_classes=2) 
trainY[0:5]
# array([[ 1.,  0.],
#        [ 1.,  0.],
#        [ 1.,  0.],
#        [ 0.,  1.],
#        [ 1.,  0.]])

所以,我建议的是:

  • 卸载您当前的TFLearn
  • 使用pip install tflearn
  • 安装最新的稳定版本
  • nb_classes=2
  • 中加入参数to_categorical

当然,只需使用nb_classes=2更新代码即可,但也可能不会 - 请参阅this question以及我的答案。

答案 1 :(得分:0)

我遇到同样的问题。

看起来tflearn版本太低了,只有在较新版本中才不再需要nb_classes参数。

您可以尝试更新到它的最新版本。 (不是来自pip install tflearn。直到现在 - 2017/10/25 - 这还不够新。) pip install git+https://github.com/tflearn/tflearn.git

或者您可以添加额外参数,这是一个表示类总数的整数,可以根据您使用的数据集而有所不同。