2016-08-27 5 views
0

を持っていない私は、ナバナネオンとfpropをやろうとしているが、しかし、私は次のエラーを取得する:ナバナネオンはAttributeError:私はモデルfpropを実行するために行くときに「NoneType」オブジェクトが属性「sizeI」

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

私は非常に近いfpropの例に従っています。私は彼らのImageLoaderを使ってモデルを訓練しましたが、今はシステムでその結果を利用したいと思います。私はmodel.get_outputs(ArrayIterator(myData))を使用しようとしましたが、それでも問題はありません。何かご意見は? layerオブジェクトの属性sizeI逆参照layerNoneあるときに、あなたのスタックトレースに後方の作業

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' 
+0

'None.size' - yupはそれを持っていません。 – user2864740

答えて

0

...

問題が試みから来ている:

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

私は」 dネオンライブラリ(backends/nervanagpu.py)のバグを呼び出してください - そのような1938行以上のものを持っている必要があります:

assert isinstance(layer, TheExpectedLayerClass) 

同様のチェックが行788の前に、layers/layer.pyで、以前にも追加されている可能性:

assert isinstance(self.nglayer, TheExpectedLayerClass) 

しかし、多くの場合、サードパーティのLIBSの中に、このようなバグを打つには、単純にライブラリがで使用されていないことを指摘していますそれは意図された方法です。バグは単にはっきりしない本当の原因は、適切なチェックを早くしないことです。何が欠けているのかはっきりしています。

それでは、いくつかのinit/setupのステップや追加の引数などが不足しているかもしれません。ネオンに慣れている場合は、スタックトレースで行方不明

+0

私はそれがバグだと信じて正しいとマークしています。私はNeonのドキュメントで説明されている機能を複製することはできませんでしたが、 'ArrayIterator'を使用して' mode.get_outputs() 'に渡すことで問題なく動作しました。 – Andrew

関連する問題