Keras,models.add()缺少1个必需的位置参数:'layer'

Aja*_*y H 3 neural-network keras tensorflow

我正在使用Keras的简单前馈神经网络对MNIST数据集的数字进行分类.所以我执行下面的代码.

import os
import tensorflow as tf

import keras
from keras.models import Sequential
from keras.layers import Dense, Activation

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets('/tmp/data', one_hot=True)

# Path to Computation graphs
LOGDIR = './graphs_3'

# start session
sess = tf.Session()

#Hyperparameters
LEARNING_RATE = 0.01
BATCH_SIZE = 1000
EPOCHS = 10

# Layers
HL_1 = 1000
HL_2 = 500

# Other Parameters
INPUT_SIZE = 28*28
N_CLASSES = 10

model = Sequential
model.add(Dense(HL_1, input_dim=(INPUT_SIZE,), activation="relu"))
#model.add(Activation(activation="relu"))
model.add(Dense(HL_2, activation="relu"))
#model.add(Activation("relu"))
model.add(Dropout(rate=0.9))
model.add(Dense(N_CLASSES, activation="softmax"))

model.compile(
    optimizer="Adam",
    loss="categorical_crossentropy",
    metrics=['accuracy'])



# one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

model.fit(
    x=mnist.train.images, 
    y=mnist.train.labels, 
    epochs=EPOCHS, 
    batch_size=BATCH_SIZE)


score = model.evaluate(
    x=mnist.test.images,
    y=mnist.test.labels)

print("score = ", score)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

model.add(Dense(1000, input_dim=(INPUT_SIZE,), activation="relu"))
   TypeError: add() missing 1 required positional argument: 'layer'
Run Code Online (Sandbox Code Playgroud)

语法完全如keras文档中所示.我正在使用keras 2.0.9,所以我认为这不是版本控制问题.我做错什么了吗?

Dan*_*ler 11

看起来确实完美......

但是我注意到你没有创建顺序模型的"实例",而是使用类名:

#yours: model = Sequential 
#correct:
model = Sequential()
Run Code Online (Sandbox Code Playgroud)

由于类中的方法总是被声明为包含self第一个参数,因此在没有实例的情况下调用方法可能需要将实例作为第一个参数(即self).

方法的定义是 def add(self,layer,...):