The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.engine.input_layer.InputLayer>
This won't work because a tensorflow.keras layer is getting added to a keras Model.
vgg_model = tensorflow.keras.applications.vgg16.VGG16()
model = keras.Sequential()
model.add(vgg_model.layers[0])
Instantiate tensorflow.keras.Sequential(). This will work.
model = tensorflow.keras.Sequential()
model.add(vgg_model.layers[0])
Adding to @Manoj Mohan's answer, you can add an input_layer
to your model
using input_layer
from Keras
layers
as below:
import keras
from keras.models import Sequential
from keras.layers import InputLayer
model = Sequential()
model.add(InputLayer(input_shape=shape, name=name))
....
if you are using the TensorFlow
builtin Keras
then import is different other things are still the same
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))
....
Coming to the main part, if you want to import layers to your sequential model, you can use the following syntax.
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)
You do not need to create an InputLayer, you simply must import the BatchNormalization layer in the same manner as your Conv2D/other layers, e.g:
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout, BatchNormalization
Instead of importing it as an independent Keras layer, i.e:
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout
from keras.layers import BatchNormalization