深度学习库 Neon DataIterator / ArrayIterator 初始化错误

Deep-learning library Neon DataIterator / ArrayIterator init error

当尝试按照 neon tutorial 中的说明设置 DataIterator 时。

from neon.data import DataIterator
import numpy as np

X = np.random.rand(10000, 3072)
y = np.random.randint(1, 11, 10000)

train = DataIterator(X=X, y=y, nclass=10, lshape=(3, 32, 32))

我遇到了一个奇怪的错误:

ERROR:neon.data.dataiterator:DataIterator class has been deprecated and  renamed"ArrayIterator" please use that name.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "neon/data/dataiterator.py", line 168, in __init__
    super(DataIterator, self).__init__(*args, **kwargs)
  File "neon/data/dataiterator.py", line 82, in __init__
    self.Xdev = [self.be.array(x) for x in X]
AttributeError: 'NoneType' object has no attribute 'array'

然后我尝试使用 ArrayIterator,保持 X、y 不变。

ArrayIterator(X=X, y=y, nclass=10, lshape=(3,32,32))

具有相同的 NoneType 错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "neon/data/dataiterator.py", line 82, in __init__
    self.Xdev = [self.be.array(x) for x in X]
AttributeError: 'NoneType' object has no attribute 'array'

为什么会这样?有简单的解决方法吗?

通过生成 backend 解决了问题。

from neon.backends import gen_backend

be = gen_backend()
(...)