Je suis nouveau dans l'apprentissage automatique. Je suivais cela tutoriel sur les modèles VGG16 à réglage fin.
Le modèle s'est bien chargé avec ce code:
vgg_model = tensorflow.keras.applications.vgg16.VGG16()
mais obtient cette ERREUR:
TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.engine.input_layer.InputLayer object at 0x000001FA104CBB70>
Lors de l'exécution de ce code:
model = Sequential()
for layer in vgg_model.layers[:-1]:
model.add(layer)
Dépendances:
Je suis ceci blog mais à la place je veux utiliser VGG16.
Toute aide pour résoudre ce problème serait appréciée. Merci beaucoup.
Cela ne fonctionnera pas car une couche tensorflow.keras est ajoutée à un modèle de keras.
vgg_model = tensorflow.keras.applications.vgg16.VGG16()
model = keras.Sequential()
model.add(vgg_model.layers[0])
Instanciez tensorflow.keras.Sequential (). Cela fonctionnera.
model = tensorflow.keras.Sequential()
model.add(vgg_model.layers[0])
Vous n'avez pas besoin de créer un InputLayer, vous devez simplement importer la couche BatchNormalization de la même manière que votre Conv2D/autres couches, par exemple:
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout, BatchNormalization
à la place de l'importer en tant que couche Keras indépendante, c'est-à-dire:
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout
from keras.layers import BatchNormalization
En ajoutant à la réponse de @Manoj Mohan, vous pouvez ajouter un input_layer
à votre model
à l'aide de input_layer
de Keras
layers
comme ci-dessous:
import keras
from keras.models import Sequential
from keras.layers import InputLayer
model = Sequential()
model.add(InputLayer(input_shape=shape, name=name))
....
si vous utilisez le TensorFlow
builtin Keras
alors l'importation est différente les autres choses sont toujours les mêmes
import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import InputLayer
model = Sequential()
model.add(InputLayer(input_shape=shape, name=name))
....
Pour en venir à la partie principale, si vous souhaitez importer des couches dans votre modèle séquentiel, vous pouvez utiliser la syntaxe suivante.
import keras
from keras.models import Sequential, load_model
from keras import optimizers
from keras.applications.vgg16 import VGG16
from keras.applications.vgg19 import VGG19
# For VGG16 loading to sequential model
model = Sequential(VGG16().layers)
# For VGG19 loading to sequential model
model = Sequential(VGG19().layers)