Python 局部变量';探头';分配前参考

Python 局部变量';探头';分配前参考,python,deep-learning,neural-network,local-variables,probe,Python,Deep Learning,Neural Network,Local Variables,Probe,嗨,我正在做一个关于探测器的深度学习项目, 继续运行到“未绑定本地错误” def call(self, x): if self.layer_num == -1: # for network training for (i, layer) in enumerate(self.my_layers): if i == 10: x = self.dense(x) x = layer(x) return x else: for layer

嗨,我正在做一个关于探测器的深度学习项目, 继续运行到“未绑定本地错误”

def call(self, x):
if self.layer_num == -1: # for network training 
  for (i, layer) in enumerate(self.my_layers):
    if i == 10:
      x = self.dense(x)
      x = layer(x)
      return x       
else:
  for layer in self.my_layers[0:self.layer_num]: 
    x = layer(x)
    x = tf.stop_gradient(x)
    probe = self.my_probes[self.layer_num]
  return probe(x)
然后,在另一个def下

def probe_training(weights): ...

for layer_num in model.my_probes.keys():
model.layer_num = layer_num
model(X_train[0:Batch])
weights = model.get_weights() 
UnboundLocalError回溯(最近一次调用)
在()
42对于model.my\u probes.keys()中的层\u num:
43 model.layer\u num=layer\u num
--->44型(X_系列[0:批次])
45权重=模型。获取权重()
46
1帧
通话中(self,x)
70 x=tf.停止梯度(x)
71 probe=self.my_probe[self.layer_num]
--->72返回探头(x)
73
74型号=NN()
UnboundLocalError:*赋值前引用的局部变量“probe”**
我认为在 如果self.layer-num==-1 也许可以解决问题,但具体如何解决//

请帮助

如果您在“for循环”中声明“probe”,而“self.my_layers[0:self.layer_num]”为None或空或导致零迭代的任何内容,则可能永远不会声明probe。如果您不确定“self.my_layers[0:self.layer_num]”是否允许您进行至少一个循环,请在循环之前声明“prob”,并使用一些默认值,然后在循环中更改它的值(如果实际发生迭代)。
UnboundLocalError                         Traceback (most recent call last)
<ipython-input-17-168198d8affe> in <module>()
     42 for layer_num in model.my_probes.keys():
     43   model.layer_num = layer_num
---> 44   model(X_train[0:Batch])
     45   weights = model.get_weights()
     46 

1 frames
<ipython-input-16-a9dee0e32692> in call(self, x)
     70         x = tf.stop_gradient(x)
     71         probe = self.my_probes[self.layer_num]
---> 72       return probe(x)
     73 
     74 model = NN()

UnboundLocalError: **local variable 'probe' referenced before assignment**