python - AttributeError:“ProgbarLogger”对象没有属性“log_values”
问题描述
我曾尝试使用 spyder运行此分割模型。当我运行时data.py
,我收到此消息
文件“C:/Users/achaire/Downloads/Compressed/ultrasound-nerve-segmentation-master/ultrasound-nerve-segmentation-master/data.py”,第 19 行,在 create_train_data imgs = np.ndarray((total, image_rows, image_cols), dtype=np.uint8)
TypeError:'float' 对象不能解释为整数
代码是:
**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行替换为第18行total = int(len(images) / 2)
和第19行。问题已经解决了。np.uint8
float
当我跑步时,train.py
我有这个消息
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')
------------------------------
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
,keras
并且python
...
解决方案
答案 1:如果错误仅在您使用较小的数据集时发生,那么您很可能使用的数据集小到在验证集中没有单个样本。
因此它无法计算验证损失。
答案 2:我对上一个答案投了赞成票,因为它让我有见识来验证 fit_generator 函数的数据和输入,并找出问题的根本原因。总之,在我的数据集很小的情况下,我计算了validation_steps 和steps_per_epoch,结果是零(0)导致了错误。
我想,也许对 Keras 团队来说,更好的长期答案是当这些值为零时在 fit_generator 中导致错误/异常,这可能会导致更好地理解如何解决这个问题。
答案 3:我们发生错误是因为我们忘记在 fit() 方法中设置validation_data,而使用了'callbacks':[keras.callbacks.EarlyStopping(monitor='val_loss', patient=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/
推荐阅读
- docker - Gitlab:在job2中构建的容器内使用job1中创建的工件
- c# - Azure CosmosDB:提高批量插入性能
- javascript - Ctrl + C 上的 expressJS 和 nodemon 并重新启动:错误:停止和重新启动时绑定 EADDRINUSE null:3000
- flutter - 在 Firestore 中按盎司搜索多个字段
- reactjs - 替换heroku中的localhost
- php - 如何将多个文件上传到一个 CELL 中?
- python - CSRF 失败:CSRF 令牌丢失或不正确。在 Google 的 foobar 平台中提交 foobar 解决方案时出错
- visual-studio-code - VSCode Live Server Extension 在本地主机上无限加载
- swift - 具有日期范围的 CoreData 复合提取的意外结果
- javascript - 如果检查,检查 MomentJS 数据 toString 未正确评估