Nervana Neon属性错误:' NoneType'对象没有属性' sizeI'

时间:2016-08-27 21:17:41

标签: python deep-learning nervana-neon

我试图用Nervana Neon做fprop,然而,当我去运行模型fprop时,我得到以下错误:

  

AttributeError:' NoneType'对象没有属性' sizeI'

我非常关注fprop的例子。我使用他们的ImageLoader训练了模型,现在我想在系统中使用结果。我尝试使用model.get_outputs(ArrayIterator(myData))但仍然有问题。有什么想法吗?

xdev = np.zeros((3 * 224 * 224, batch_size), dtype=np.float32)
xbuf = np.zeros((3 * 224 * 224, batch_size), dtype=np.float32)
img = to_neon(new_img) # function to flatten image to (3 * 224 * 224, ) 
xbuf[:,0] = img[:, 0]
model = model.load_params("/path/to/params.p")
out = model.fprop(xdev)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-35-fc650f5dcbc4> in <module>()
----> 1 out = model.fprop(xdev)

/root/neon/neon/models/model.pyc in fprop(self, x, inference)
    213             Tensor: the output of the final layer in the model
    214         """
--> 215         return self.layers.fprop(x, inference)
    216 
    217     def bprop(self, delta):

/root/neon/neon/layers/container.pyc in fprop(self, inputs, inference, beta)
    248                 x = l.fprop(x, inference, beta=beta)
    249             else:
--> 250                 x = l.fprop(x, inference)
    251 
    252         if inference:

/root/neon/neon/layers/layer.pyc in fprop(self, inputs, inference, beta)
    787         self.inputs = inputs
    788         self.be.fprop_conv(self.nglayer, inputs, self.W, self.outputs, beta=beta,
--> 789                            bsum=self.batch_sum)
    790         return self.outputs
    791 

/root/neon/neon/backends/nervanagpu.pyc in fprop_conv(self, layer, I, F, O, X, bias, bsum, alpha, beta, relu, brelu, slope, repeat)
   1936         repeat: used in benchmarking
   1937         """
-> 1938         assert layer.sizeI == I.size
   1939         assert layer.sizeF == F.size
   1940         assert layer.sizeO == O.size

AttributeError: 'NoneType' object has no attribute 'sizeI'

1 个答案:

答案 0 :(得分:0)

在堆栈跟踪上向后工作......

问题来自于sizeIlayer时尝试取消引用layer对象的None属性:

-> 1938 assert layer.sizeI == I.size

我称之为霓虹灯库中的一个错误(backends/nervanagpu.py) - 它应该高于1938行,如:

    assert isinstance(layer, TheExpectedLayerClass)

在第788行之前,layers/layer.py中可能已经添加了类似的检查:

    assert isinstance(self.nglayer, TheExpectedLayerClass)

但是经常在第三方库中遇到这样的错误只是表明该库未按照预期的方式使用。这些错误只是通过不进行适当的检查来简单地模糊真正的原因,也许它清楚了解了什么。

因此,请查看文档/教程,也许您错过了某些初始化/设置步骤,某些其他参数,等等。或者,如果您对霓虹灯更熟悉,请继续在堆栈跟踪上向后你会发现缺少的东西。