Ошибка Tensorflow: «Ошибка значения: градиенты не предусмотрены ни для одной переменной»

#tensorflow #keras

Вопрос:

Я внедряю модель повторной идентификации транспортного средства в Tensorflow.

В отдельном файле у меня есть еще одна подклассная модель, которую я сохранил с помощью model.save(path) . В этом файле я импортирую его с помощью keras.models.load_model(path) этой модели и использую ее как часть своей подклассной модели. Я могу подтвердить, что эта внешняя модель тренируется без проблем.

Я также создаю подклассный слой в этом файле (выпуклость).

Я использую пользовательский тренировочный шаг, видимый в train_step() , и пользовательский прямой проход, видимый call() в.

Я читал, что эта ошибка обычно вызвана неправильной формой вывода из класса ImageDataGenerator, который я использую, но я не могу понять, где возникает эта проблема.

Одна вещь, которая была бы полезна для понимания этой проблемы, — это то, в что именно передается объект данных train_step(self, data) ? это всего лишь один пакет из ImageDataGenerator? Если это так, то я не уверен, в чем проблема с формами.

Полную ошибку и мой код можно увидеть здесь: https://vehiclereidjupyternotebook.s3.eu-west-2.amazonaws.com/Full_pipeline-2.html

Комментарии:

1. clip_by_value не дифференцируема, вот почему вы получаете градиент, равный нулю.

2. Это все еще тот случай, когда я не использую его в обучаемой переменной? В моем случае я подаю заявку только clip_by_value после определения обучаемой переменной. Если это так, спасибо, я удалю эту строку — хотя, попробовав ее, я, к сожалению, все еще получаю ошибку.

Ответ №1:

Я обращался model.fit() к своей импортированной модели вместо реальной модели.