Python 3.x UnboundLocalError:局部变量';img#u文件';分配前参考

Python 3.x UnboundLocalError:局部变量';img#u文件';分配前参考,python-3.x,keras,Python 3.x,Keras,我正在Windows 64位上使用python 3.6.0b2。 下面是一个python代码,它使用图像训练keras模型 train_imgs, train_vessels =utils.get_imgs(train_dir, augmentation=True, dataset=dataset,img_size=img_size ) train_vessels=np.expand_dims(train_vessels, axis=3) n_all_imgs=train_imgs.shape[

我正在Windows 64位上使用python 3.6.0b2。 下面是一个python代码,它使用图像训练
keras
模型

train_imgs, train_vessels =utils.get_imgs(train_dir, augmentation=True, dataset=dataset,img_size=img_size )
train_vessels=np.expand_dims(train_vessels, axis=3)
n_all_imgs=train_imgs.shape[0]
n_train_imgs=int((1-val_ratio)*n_all_imgs)
train_indices=np.random.choice(n_all_imgs,n_train_imgs,replace=False)
train_batch_fetcher=utils.TrainBatchFetcher(train_imgs[train_indices,...], train_vessels[train_indices,...], batch_size)
val_imgs, val_vessels=train_imgs[np.delete(range(n_all_imgs),train_indices),...], train_vessels[np.delete(range(n_all_imgs),train_indices),...]
# set test dataset
test_imgs, test_vessels, test_masks=utils.get_imgs(test_dir, augmentation=False, img_size=img_size, dataset=dataset, mask=True)

        ##############

def get_imgs(target_dir, augmentation, img_size, dataset, mask=False):

      if dataset=='DRIVE':
          img_files,vessel_files, mask_files = DRIVE_files(target_dir)
      elif dataset=='STARE':
          img_files,vessel_files, mask_files = STARE_files(target_dir)

            # load images    
      fundus_imgs=imagefiles2arrs(img_files)
      vessel_imgs=imagefiles2arrs(vessel_files)/255
      fundus_imgs=pad_imgs(fundus_imgs, img_size)
      vessel_imgs=pad_imgs(vessel_imgs, img_size)
      assert(np.min(vessel_imgs)==0 and np.max(vessel_imgs)==1)
      if mask:
          mask_imgs=imagefiles2arrs(mask_files)/255
          mask_imgs=pad_imgs(mask_imgs, img_size)
          assert(np.min(mask_imgs)==0 and np.max(mask_imgs)==1)

当我运行上面的代码时,我得到一个错误。追溯如下

Traceback (most recent call last):
  File "O:\New folder\codes\train - Copy.py", line 89, in <module>
    train_imgs, train_vessels =utils.get_imgs(train_dir, augmentation=True, dataset=dataset,img_size=img_size )
  File "O:\New folder\codes\utils.py", line 314, in get_imgs
    fundus_imgs=imagefiles2arrs(img_files)
UnboundLocalError: local variable 'img_files' referenced before assignment
回溯(最近一次呼叫最后一次):
文件“O:\New folder\code\train-Copy.py”,第89行,在
列车imgs,列车imgs=utils.get\u imgs(列车imgs,增强=True,数据集=dataset,img\u大小=img\u大小)
get\U imgs中第314行的文件“O:\New folder\code\utils.py”
fundus_imgs=imagefiles2arrs(img_文件)
UnboundLocalError:赋值前引用的局部变量“img_files”

img_文件仅在传递if语句的情况下可用,否则将不绑定到值

      if dataset=='DRIVE':
          img_files,vessel_files, mask_files = DRIVE_files(target_dir)
      elif dataset=='STARE':
          img_files,vessel_files, mask_files = STARE_files(target_dir)
如果数据集不是驱动器或STARE,则img_文件将没有值

fundus_imgs=imagefiles2arrs(img_files)    # img_files has to have some value before you can use it.