Keras: измененный ImageDataGenerator выдает ошибку «__init __ () получил неожиданный аргумент ключевого слова» - PullRequest
0 голосов
/ 07 февраля 2020

Я использую keras=2.3.1, и я хотел использовать свою собственную версию zca_whitening. Для этого я внес изменения непосредственно в класс ImageDataGenerator в файле keras /home/user/.local/lib/python3.6/site-packages/keras_preprocessing/image/image_data_generator.py. Файл, включая мои изменения, это один . Мой файл нейронной сети nn_script.py, который использует это измененное image_data_generator.py, можно увидеть здесь . Нет проблем, пока nn_script.py использует стандартные расширения keras, такие как:

train_datagen = ImageDataGenerator(
    rotation_range=30,
    shear_range=0.2,
    samplewise_center=True, samplewise_std_normalization=True) 

Но если я решу включить свою собственную версию zca_whitening под названием zca_whitening_fast таким образом

train_datagen = ImageDataGenerator(
    rotation_range=30,
    shear_range=0.2,
    samplewise_center=True, samplewise_std_normalization=True,
    zca_whitening_fast=True) 

Я получаю сообщение об ошибке

Traceback (most recent call last):
  File "nn_script.py", line 55
TypeError: __init__() got an unexpected keyword argument 'zca_whitening_fast'

Вы можете воспроизвести мое сообщение об ошибке, заменив файл image_data_generator.py файлом, который я разместил выше, и попытавшись создать генератор с параметром zca_whitening_fast=True .

Сначала я подумал, что проблема в том, что я забыл включить zca_whitening_fast в def __init__() в файл image_data_generator.py, но он есть, как вы можете проверить. Я также попытался удалить папку __pycache__, потому что я думал, что некоторые старые файлы выполняются в этой папке, но появилась та же ошибка. Теперь мне интересно, приходит ли сообщение об ошибке из __init__(), который находится в другом файле, а не в image_data_generator.py. Я думаю, что решение является чем-то очевидным, мне, вероятно, нужно внести изменения в другой файл в папке предварительной обработки keras, но я не знаю, какой именно. Я не думаю, что проблема в том, что моя версия keras устарела и по причинам совместимости с моей картой graphi c я не могу обновить keras.

Есть идеи, почему я получаю это сообщение об ошибке? Спасибо

1 Ответ

0 голосов
/ 07 февраля 2020

Вы изменили файлы в пакете keras_preprocessing, но вы, вероятно, импортируете keras.preprocessing, который является другим пакетом. Это нормально, keras.preprocessing просто перенаправляет все вызовы на keras_preprocessing.

Так что вам нужно также внести изменения в файлы keras/preprocessing/image.py внутри пакета keras, как показано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...