<p>根据所写内容<a href="https://github.com/keras-team/keras/issues/2226#issuecomment-259004640" rel="nofollow noreferrer">here</a>我试图在训练期间使用<strong>获得计算的梯度克拉斯特遣部队</strong>,我得到了以下回调函数,该函数在配件阶段调用:</p>
<p>使用的网络是一个非常标准的网络,完全连接和顺序。你知道吗</p>
<pre><code>r = network.fit(x=trn.X,y=trn.Y,verbose=2,batch_size=50,epochs=50,callbacks=[reporter,])
</code></pre>
<pre><code>def on_train_begin(self, logs={}):
# Functions return weights of each layer
self.layerweights = []
for lndx, l in enumerate(self.model.layers):
if hasattr(l, 'kernel'):
self.layerweights.append(l.kernel)
input_tensors = [self.model.inputs[0],
self.model.sample_weights[0],
self.model.targets[0],
K.learning_phase()]
# Get gradients of all the relevant layers at once
grads = self.model.optimizer.get_gradients(self.model.total_loss, self.layerweights)
self.get_gradients = K.function(inputs=input_tensors,outputs=grads) # <-- Error Here
</code></pre>
<p>出现以下错误信息:</p>
<pre><code>~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\eager\lift_to_graph.py in (.0)
312 # Check that the initializer does not depend on any placeholders.
313 sources = set(sources or [])
--> 314 visited_ops = set([x.op for x in sources])
315 op_outputs = collections.defaultdict(set)
316
AttributeError: 'NoneType' object has no attribute 'op'
</code></pre>
<p>你知道怎么解决吗?
已经读过<a href="https://stackoverflow.com/questions/51140950/how-to-obtain-the-gradients-in-keras">this one</a>,和<a href="https://stackoverflow.com/questions/54566337/how-to-get-gradient-values-using-keras-backend-gradients">this one</a>,但是没有运气</p>
<pre><code>AttributeError: 'NoneType' object has no attribute 'op'
</code></pre>
<p>意味着你有一个对象或属性没有。<br/>
要处理它,您可以使用以下方法:</p>
<pre><code>visited_ops = set([x.op for x in sources if x])
</code></pre>