• 神经网络——项目二CNN手写数字识别


     1  2 import numpy as np
     3 from keras.models import Sequential
     4 from keras.layers.core import Dense, Dropout, Activation
     5 from keras.layers import Convolution2D, MaxPooling2D, Flatten
     6 from keras.optimizers import SGD, Adam
     7 from keras.utils import np_utils
     8 from keras.datasets import mnist
     9 #categrorical_crossentropy
    10 
    11 def load_data():
    12     (x_train, y_train), (x_test, y_test) = mnist.load_data()
    13     
    14     #x_train = x_train[0:number]
    15     #y_train = y_train[0:number]
    16     x_train = x_train.reshape(x_train.shape[0], 1, 28, 28)
    17     x_test = x_test.reshape(x_test.shape[0], 1, 28, 28)
    18     x_train = x_train.astype('float32')
    19     x_test = x_test.astype('float32')
    20     # convert class vector to binary class matrices
    21     y_train = np_utils.to_categorical(y_train, 10)
    22     y_test = np_utils.to_categorical(y_test, 10)
    23     x_train = x_train
    24     x_test = x_test
    25     #x_test = np.random.normal(x_test)
    26     x_train = x_train / 255
    27     x_test = x_test / 255
    28     return (x_train, y_train), (x_test,y_test)
    29 
    30 (x_train, y_train), (x_test,y_test) = load_data()
    31 
    32 
    33 model2 = Sequential()
    34 model2.add(Convolution2D(25, 3, strides=3, input_shape=(1, 28, 28), data_format='channels_first', padding='same'))  
    35 model2.add(MaxPooling2D((2, 2))) 
    36 
    37 
    38 
    39 
    40 
    41 model2.add(Convolution2D(50, 3, strides=3, padding='same')) 
    42 model2.add(MaxPooling2D(2, 2))   
    43 
    44 
    45 model2.add(Flatten())
    46 
    47 model2.add(Dense(128, activation='relu'))
    48 model2.add(Dense(10, activation='softmax'))
    49 
    50 model2.compile(loss='mse', optimizer=SGD(lr=0.1), metrics=['accuracy'])
    51 model2.fit(x_train, y_train, batch_size=200, epochs=10, verbose=1)
    52 
    53 result = model2.evaluate(x_test, y_test, verbose=0)
    54 
    55 print('
    Test Acc:', result)

    以上demo是可以运行,但需修改parameters 

    过程所遇到的Error总结:

    1.Negative dimension size caused by subtracting 3 from 1 for 'conv2d_1/convolution' (op: 'Conv2D') .....

    2.ValueError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_2/MaxPool' (op: 'MaxPool') with input shapes: [?,4,1,50].

    解决方案如下:

     

     

  • 相关阅读:
    解决spring配置文件没有提示的问题
    SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
    在编辑Spring的配置文件时的自动提示
    Java注释@interface的用法【转】
    spring-autowire机制
    一些汇编指令
    Windows底层开发前期学习准备工作
    log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG ”该怎么写在log4j.xml里面呢?
    log4j 配置文件 (XML/.properties)
    [VC]C++ operator 两种用法
  • 原文地址:https://www.cnblogs.com/cfancy/p/12331853.html
Copyright © 2020-2023  润新知