TypeError:添加的图层必须是类Layer的实例。找到:<keras.layers.core.Dropout对象位于0x000001622999A5F8>

时间:2020-09-06 06:50:00

标签: python tensorflow keras

导入库和模型

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

在书面代码下方

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'))

在类型错误下方,这是我所面临的严重问题,无法解决,

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>

现在,我该如何解决此类错误? 需要帮助

2 个答案:

答案 0 :(得分:2)

使用Keras or tensorflow.keras,不要同时使用它们。

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'))

答案 1 :(得分:1)

您使用tensorflow.keras实例创建模型的问题,并且试图添加Keras实例的层。

Tensorflow有自己的Keras版本。所以只用一个。

您的代码在修复导入语句后运行。
代码:

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