keras 识别Mnist
来源:互联网 发布:sql if else 多条件 编辑:程序博客网 时间:2024/06/06 01:16
# -*- coding: utf-8 -*-
# Larger CNN for the MNIST Dataset
# 2.Negative dimension size caused by subtracting 5 from 1 for 'conv2d_4/convolution' (op: 'Conv2D') with input shapes
# 3.UserWarning: Update your `Conv2D` call to the Keras 2 API: http://blog.csdn.net/johinieli/article/details/69222956
# 4.Error when checking input: expected conv2d_1_input to have shape (None, 28, 28, 1) but got array with shape (60000, 1, 28, 28)
# talk to wumi,you good .
# python 3.5.4
# keras.__version__ : 2.0.6
# thensorflow 1.2.1
# theano 0.10.0beta1
# 不错的blog http://blog.csdn.net/shizhengxin123/article/details/72383728
import numpy
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.utils import np_utils
import matplotlib.pyplot as plt
from keras.constraints import maxnorm
from keras.optimizers import SGD
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# reshape to be [samples][pixels][width][height]
X_train = X_train.reshape(X_train.shape[0], 28, 28,1).astype('float32')
X_test = X_test.reshape(X_test.shape[0],28, 28,1).astype('float32')
#X_train = X_train.reshape(X_train.shape[0], 1, 28, 28).astype('float32')
#X_test = X_test.reshape(X_test.shape[0], 1, 28, 28).astype('float32') <---4
# normalize inputs from 0-255 to 0-1
X_train = X_train / 255
X_test = X_test / 255
# one hot encode outputs
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
###raw
# define the larger model
def larger_model():
# create model
model = Sequential()
model.add(Conv2D(30, (5, 5), padding='valid', input_shape=(28, 28,1), activation='relu'))
#model.add(Conv2D(30, (5, 5), padding='valid', input_shape=(28, 28,1), activation='relu')) <----3,2
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))
model.add(Conv2D(15, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(50, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(num_classes, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
# build the model
model = larger_model()
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2) # epochs 200 too bigger
#model.fit(X_train, y_train, validation_data=(X_test, y_test), nb_epoch=200, batch_size=200, verbose=2)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Large CNN Error: %.2f%%" % (100-scores[1]*100))
scores1 = model.evaluate(X_test[0], y_test[0], verbose=0)
print(scores1)
# Larger CNN for the MNIST Dataset
# 2.Negative dimension size caused by subtracting 5 from 1 for 'conv2d_4/convolution' (op: 'Conv2D') with input shapes
# 3.UserWarning: Update your `Conv2D` call to the Keras 2 API: http://blog.csdn.net/johinieli/article/details/69222956
# 4.Error when checking input: expected conv2d_1_input to have shape (None, 28, 28, 1) but got array with shape (60000, 1, 28, 28)
# talk to wumi,you good .
# python 3.5.4
# keras.__version__ : 2.0.6
# thensorflow 1.2.1
# theano 0.10.0beta1
# 不错的blog http://blog.csdn.net/shizhengxin123/article/details/72383728
import numpy
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.utils import np_utils
import matplotlib.pyplot as plt
from keras.constraints import maxnorm
from keras.optimizers import SGD
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# reshape to be [samples][pixels][width][height]
X_train = X_train.reshape(X_train.shape[0], 28, 28,1).astype('float32')
X_test = X_test.reshape(X_test.shape[0],28, 28,1).astype('float32')
#X_train = X_train.reshape(X_train.shape[0], 1, 28, 28).astype('float32')
#X_test = X_test.reshape(X_test.shape[0], 1, 28, 28).astype('float32') <---4
# normalize inputs from 0-255 to 0-1
X_train = X_train / 255
X_test = X_test / 255
# one hot encode outputs
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
###raw
# define the larger model
def larger_model():
# create model
model = Sequential()
model.add(Conv2D(30, (5, 5), padding='valid', input_shape=(28, 28,1), activation='relu'))
#model.add(Conv2D(30, (5, 5), padding='valid', input_shape=(28, 28,1), activation='relu')) <----3,2
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))
model.add(Conv2D(15, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.4))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(50, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(num_classes, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
# build the model
model = larger_model()
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2) # epochs 200 too bigger
#model.fit(X_train, y_train, validation_data=(X_test, y_test), nb_epoch=200, batch_size=200, verbose=2)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Large CNN Error: %.2f%%" % (100-scores[1]*100))
scores1 = model.evaluate(X_test[0], y_test[0], verbose=0)
print(scores1)
阅读全文
0 0
- keras 识别Mnist
- Keras 浅尝之MNIST手写数字识别
- keras/构建卷积神经网络识别mnist
- Keras MNIST
- Keras-2 Keras Mnist
- 利用keras(tensorflow) 做cnn mnist识别
- Keras中将LSTM用于mnist手写数字识别
- keras:1)初体验-MLP神经网络实现MNIST手写识别
- 利用keras(tensorflow) 做cnn mnist识别
- Keras 入门课1 -- 用MLP识别mnist手写字符
- Keras入门课2 -- 使用CNN识别mnist手写数字
- kaggle mnist tensorflow+keras
- keras mnist cnn example
- DCGAN+keras生成mnist
- keras 手把手入门#1-MNIST手写数字识别 深度学习实战闪电入门
- [Keras实战] 构建LeNet实现手写数字识别(mnist数据集)
- 用keras实验mnist数据
- Keras-4 mnist With CNN
- Ignoring exception during close for org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader@
- job_local697558965_0001 java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.jav
- 单例模式原理
- 分类器的比较方法
- AAPT2 error
- keras 识别Mnist
- 基于PyTorch的深度学习入门教程(七)——PyTorch重点综合实践
- 实验:java call so, 传入传出多参数
- shell基础知识梳理一
- 利用keras(tensorflow) 做cnn mnist识别
- 正规化--预防过拟合
- 图麟科技完成 2.5 亿元 A 轮融资,CV应用还有多少细分领域可供分割?
- Google 何时回归中国?这个问题也许根本就不存在
- 为什么说阿里云的云骨干网系云计算第三代技术标志 | 解读