set_weights перестал работать с tenorflow 2 - PullRequest
0 голосов
/ 10 марта 2020

Обновление нашей кодовой базы из keras -> tenorflow.keras по несвязанным причинам.

keras 2.3.1 tenenflow 2.1.0

Этот код работает на keras, но не работает на tf. keras:

weights = applications.VGG16(weights='imagenet', include_top=False).get_weights()
model.set_weights(tempweights)

Ошибка:

You called `set_weights(weights)` on layer "model" with a  weight list of length 26, but the layer was expecting 32 weights. Provided weights: [array([[[[ 4.29470569e-01,  1.17273867e-01,  3.40...

при использовании keras.applications.VGG16 (). get_weights () не исправляет это, приводит к точно такой же ошибке.

Изучили эти проблемы с github, которые выглядят похожими, но не смогли найти причину моей проблемы:

https://github.com/keras-team/keras/issues/7229 https://github.com/keras-team/keras/issues/4753

Следующие работы:

model.weights[0] = weights[0]

Это выглядит, как у keras.model.set_weights () было некоторое поведение для работы с несоответствующими весами, но tf.tensorflow.keras не имеет такого поведения?

Подтверждено. Поведение изменилось. Include_top = True исправили это в нашем конкретном случае c, потому что это привело к тому, что наши модели совпали. Keras не выдает ошибок, когда модели не совпадают, и я точно не знаю, что делает в этом случае *1029*. Не собираюсь это расследовать. Оставив решение здесь.

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