【问题标题】:Keras for multiple digit recognition用于多位数识别的 Keras
【发布时间】:2017-02-07 04:58:17
【问题描述】:

我正在尝试通过 Keras(theano 后端)中的一些练习来理解 CNN。我无法拟合下面的模型(错误:AttributeError:'Convolution2D' 对象没有属性'get_shape')。该数据集是来自 MNIST 数据的图像 (28*28) 连接在一起,最多可包含五张图像。所以输入的形状应该是1、28、140(灰度=1,高度=28,宽度=28*5)

目标是预测数字序列。谢谢!!

batch_size = 128
nb_classes = 10
nb_epoch = 2

img_rows =28
img_cols=140
img_channels = 1

model_input=(img_channels, img_rows, img_cols)

x = Convolution2D(32, 3, 3, border_mode='same')(model_input)
x = Activation('relu')(x)
x = Convolution2D(32, 3, 3)(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.25)(x)
conv_out = Flatten()(x)

x1 = Dense(nb_classes, activation='softmax')(conv_out)
x2 = Dense(nb_classes, activation='softmax')(conv_out)
x3 = Dense(nb_classes, activation='softmax')(conv_out)
x4 = Dense(nb_classes, activation='softmax')(conv_out)
x5 = Dense(nb_classes, activation='softmax')(conv_out)

lst = [x1, x2, x3, x4, x5]

model = Sequential(input=model_input, output=lst)

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

model.fit(dataset, data_labels, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1)

【问题讨论】:

    标签: python keras conv-neural-network mnist


    【解决方案1】:

    问题出在输入层。进行以下更改:

    model_input=Input(shape=(img_channels, img_rows, img_cols))
    

    假设您的 image_dim_orderingth。从keras.layers 导入Input 层。

    我还注意到有多个输出。所以你需要使用函数模型而不是顺序模型。只需将其更改为:

    model = Model(input=model_input, output=lst)
    

    keras.models 导入Model

    【讨论】:

    • 感谢您的回复。我仍然认为张量对象不可迭代。
    • model.fit() 的错误。如果是这样,我的猜测是 data_labels 应该是长度为 5 的 numpy 数组的列表。每个 numpy 数组的维度应该是 dataset.shape[0] x nb_classes
    • 您好,错误在激活层。这是完整代码的链接:gist.github.com/jdills26/ca69e59ef19d4993636f6b50a7cbe514 感谢您的帮助!这里是数据源:yann.lecun.com/exdb/mnist/index.html
    • 好的,我注意到一些问题。 1. dataset=dataset[:,np.newaxis,:,:] 这将修复输入形状以接收通道。 2. 根据创建的张量图,输出不正确。格式应如前面评论中所述。我已经评论了大致修复的要点(可能有一些错误,但它会给你这个想法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多