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

时间:2017-12-11 17:14:24

标签: tensorflow neural-network keras

我正在使用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)

但是,我收到以下错误:

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

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

1 个答案:

答案 0 :(得分:10)

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

但是我注意到你并没有创造出#34;一个实例"对于顺序模型,您改为使用类名:

#yours: model = Sequential 
#correct:
model = Sequential()

由于类中的方法始终声明包含self作为第一个参数,因此调用不带实例的方法可能需要将实例作为第一个参数(即self)。

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