Imdadul Haque
Imdadul Haque

Reputation: 1855

TypeError: The added layer must be an instance of class Layer. Found: <keras.layers.core.Dropout object at 0x000001622999A5F8>

Import libraries and models,

from __future__ import print_function
import keras
from keras.datasets import mnist
from tensorflow.keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
#from tensorflow.keras.layers import backend as k

batch_size = 128
num_classes = 10
epochs = 12

Below the written code,

model = Sequential()
    model.add(Conv2D(32, kernel_size=(3,3), strides=(1,1), activation="relu", input_shape=(28, 28, 1) ))
    model.add(Conv2D(32, kernel_size=(3,3), strides=(1,1), activation="relu"))
    
    model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2) ))
    
    model.add(Dropout(0.5))
    model.add(Flatten())
    
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(10, activation='softmax'))

Below the type error, which I badly faced and i can't make the solution,

TypeError                                 Traceback (most recent call last)
<ipython-input-6-6c99a01e13d4> in <module>
      7 model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2) ))
      8 
----> 9 model.add(Dropout(0.5))
     10 model.add(Flatten())

TypeError: The added layer must be an instance of class Layer. Found: <keras.layers.core.Dropout object at 0x000001622999A5F8>

Now, How should i solve this type of error? Need Help,

Upvotes: 2

Views: 4004

Answers (2)

ashraful16
ashraful16

Reputation: 2782

Use Keras or tensorflow.keras, don't use both of them.

from __future__ import print_function
from tensorflow import keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras import backend as k

batch_size = 128
num_classes = 10
epochs = 12

model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), strides=(1,1), activation="relu", input_shape=(28, 28, 1) ))
model.add(Conv2D(32, kernel_size=(3,3), strides=(1,1), activation="relu"))

model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2) ))

model.add(Dropout(0.5))
model.add(Flatten())

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

Upvotes: 3

Aniket Bote
Aniket Bote

Reputation: 3564

The problem you have created your model using tensorflow.keras instance and you are trying to add layers of Keras instance.

Tensorflow has its own Keras version. So use only one.

Your code runs after fixing your import statements.
Code:

from __future__ import print_function
from tensorflow import keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
#from tensorflow.keras.layers import backend as k

Upvotes: 1

Related Questions