AttributeError:“ ProgbarLogger”对象没有属性“ log_values”

时间:2019-09-09 16:14:53

标签: python numpy keras deep-learning spyder

我尝试使用spyder运行此segmentation model。 当我运行na时,我会收到此消息

  

create_train_data中第19行的文件“ C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/data.py”       imgs = np.ndarray((total,image_rows,image_cols),dtype = np.uint8)

     

TypeError:“ float”对象不能解释为整数

代码是:

data.py

我在第 18 19 行中用**14** def create_train_data(): **15** train_data_path = os.path.join(data_path, 'train') **16** images = os.listdir(train_data_path) **17** total = len(images) / 2 **18** imgs = np.ndarray((total, image_rows, image_cols), dtype=np.uint8) **19** imgs_mask = np.ndarray((total, image_rows, image_cols), dtype=np.uint8) 替换了 17 行,并用total = int(len(images) / 2)替换了{{1}强>。问题解决了。

我运行np.uint8时收到此消息

float

我拥有train.pyrunfile('C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/train.py', wdir='C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master') ------------------------------ Loading and preprocessing train data... ------------------------------ ------------------------------ Creating and compiling model... ------------------------------ C:\Users\achaire\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py:3118: RuntimeWarning: Mean of empty slice. out=out, **kwargs) C:\Users\hamdi\Anaconda3\lib\site-packages\numpy\core\_methods.py:140: RuntimeWarning: Degrees of freedom <= 0 for slice keepdims=keepdims) ------------------------------ Fitting model... ------------------------------ C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/train.py:119: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`. callbacks=[model_checkpoint]) Train on 0 samples, validate on 0 samples Epoch 1/20 Traceback (most recent call last): File "<ipython-input-15-f713d62eb4dc>", line 1, in <module> runfile('C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/train.py', wdir='C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master') File "C:\Users\achaire\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile execfile(filename, namespace) File "C:\Users\achaire\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/train.py", line 153, in <module> train_and_predict() File "C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/train.py", line 119, in train_and_predict callbacks=[model_checkpoint]) File "C:\Users\achaire\Anaconda3\lib\site-packages\keras\engine\training.py", line 1039, in fit validation_steps=validation_steps) File "C:\Users\achaire\Anaconda3\lib\site-packages\keras\engine\training_arrays.py", line 217, in fit_loop callbacks.on_epoch_end(epoch, epoch_logs) File "C:\Users\achaire\Anaconda3\lib\site-packages\keras\callbacks.py", line 79, in on_epoch_end callback.on_epoch_end(epoch, logs) File "C:\Users\achaire\Anaconda3\lib\site-packages\keras\callbacks.py", line 338, in on_epoch_end self.progbar.update(self.seen, self.log_values) AttributeError: 'ProgbarLogger' object has no attribute 'log_values' anaconda的最新版本...

3 个答案:

答案 0 :(得分:1)

答案1: 如果仅当您使用较小的数据集时才发生错误,则很有可能使用的数据集足够小,以致验证集中没有单个样本。

因此它无法计算验证损失。

答案2: 我投票赞成前面的答案,因为它可以让我深入了解fit_generator函数的数据和输入,并找出问题的根本原因是什么。总之,在我的数据集很小的情况下,我计算出了validation_steps和steps_per_epoch,结果为零(0),这导致了错误。

我认为对于Keras团队来说,更好的长期答案是,当这些值均为零时,在fit_generator中导致错误/异常,这可能会导致对如何解决此问题有更好的理解。

答案3: 之所以发生错误,是因为我们忘记了在使用“回调”时使用fit()方法设置validation_data:[keras.callbacks.EarlyStopping(monitor ='val_loss',patience = 1)],

导致错误的代码是:

self.model.fit(
        x=x_train,
        y=y_train,
        callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)],
        verbose=True)
Adding validation_data=(self.x_validate, self.y_validate), in fit() fixed:

self.model.fit(
        x=x_train,
        y=y_train,
        callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)],
        validation_data=(x_validate, y_validate),
        verbose=True)

答案4: 发生此错误是由于数据集较小,要解决此问题,请增加火车时间并以80:20的比例划分火车集合。

参考:https://inneka.com/ml/kr/keras-early-stopping-callback-error-val_loss-metric-not-available/

答案 1 :(得分:1)

我遇到了相同的错误,并在训练时通过将verbose = 0设置为错误。

答案 2 :(得分:0)

我有同样的问题。如果问题出在您的fit_generator期间,则很有可能在data_generator代码中存在一些小错误。调试您的fit_generator