Использование двух копий VGG16 в качестве основы вызывает странную ошибку ValueError - PullRequest
0 голосов
/ 04 августа 2020

Я использую VGG16 в качестве магистрали для моей сети, но мне нужны две его копии в моей сети, где веса этой магистрали обновляются на двух разных входах, я попытался сделать следующее:

base_model=tf.keras.applications.vgg16.VGG16(weights='imagenet',include_top=False,input_shape=(224,224,3))
layer_name='block4_conv3'
encoded=base_model.get_layer(layer_name).output

new1=tf.keras.Model(base_model.input,encoded)
for layer in new1.layers:
    layer.trainable=True
new2=tf.keras.Model(base_model.input,encoded)
for layer in new2.layers:
    layer._name=layer.name
for layer in new2.layers:
layer.trainable=True

Я надеялся, что изменение имени поможет тензорному потоку с точки зрения более эффективного хранения весов, но это привело к следующей ошибке:

ValueError: Structure is a scalar but len(flat_sequence)==0 > 1

Теперь я могу изменить это и не менять имена переменных, но тогда это приводит к проблемам с оптимизацией, а также к задержкам во времени. Есть ли какие-либо мысли о том, как решить эту проблему?

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