#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()
к своей импортированной модели вместо реальной модели.