• 大小: 10.96MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-10
  • 语言: 其他
  • 标签: 代码  有注释  

资源简介

利用keras使用mnist数据集进行训练,分类,测试。可以得到较好的结果(包含mnist数据集),亲测有效,自行编写,共同学习。

资源截图

代码片段和文件信息

from keras import backend as k
from keras.models import Sequential
from keras.layers.convolutional import Conv2D MaxPooling2D
# from keras.layers.convolutional import MaxPooling2D
from keras.layers.core import Activation
from keras.layers.core import Flatten
from keras.layers.core import Dense
from keras.datasets import mnist
# from mydata import load_data
from keras.utils import np_utils
from keras.utils.vis_utils import model_to_dot
from IPython.display import SVG
from keras.optimizers import SGD RMSprop Adam
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as processimage


# 定义网络
class LeNet:
    @staticmethod
    def build(input_shape classes):
        model = Sequential()
        # CONV => RELU => POOL
        model.add(Conv2D(20 kernel_size=5 padding=“same“
                         input_shape=input_shape))
        model.add(Activation(“relu“))
        model.add(MaxPooling2D(pool_size=(2 2) strides=(2 2)))
        # CONV => RELU => POOL
        model.add(Conv2D(50 kernel_size=5 padding=“same“))
        model.add(Activation(“relu“))
        model.add(MaxPooling2D(pool_size=(2 2) strides=(2 2)))
        # Flatten => RELU layers
        model.add(Flatten())
        model.add(Dense(500))
        model.add(Activation(“relu“))

        # a softmax classifier
        model.add(Dense(classes))
        model.add(Activation(“softmax“))

        return model



# SVG(model_to_dot(model).create(prog=‘dot‘ format=‘svg‘))
NB_EPOCH =1
BATCH_SIZE = 128
VERBOSE = 2
OPTIMIZER = Adam()
VALIDATION_SPLIT = 0.2
IMG_ROWS IMG_COLS = 2828
# IMG_ROWS IMG_COLS = 512384
NB_CLASS = 10
INPUT_SHAPE = (1 IMG_ROWSIMG_COLS)
# 混合并划分训练集和测试集
(X_train y_train) (X_test y_test)=mnist.load_data()
# (X_train y_train) (X_test y_test) = load_data()
k.set_image_dim_ordering(“th“)
# 看成float类型并归一化
X_train = X_train.astype(‘float32‘)
X_test = X_test.astype(‘float32‘)
X_train /= 255
X_test /= 255
# 需要使用形状60k*[1*28*28]作为卷积网络的输入
X_train = X_train[: np.newaxis : :]
X_test = X_test[: np.newaxis : :]
print(‘X_train shape:‘ X_train.shape)
print(X_train.shape[0] ‘ train sample‘)
print(X_test.shape[0]‘test sample‘)

# 将类向量转换为二值类别矩阵
y_train = np_utils.to_categorical(y_train NB_CLASS)
y_test = np_utils.to_categorical(y_test NB_CLASS)

# 初始化优化器和模型

model = LeNet.build(input_shape=INPUT_SHAPE classes=NB_CLASS)
model.compile(loss=“categorical_crossentropy“
                  optimizer=OPTIMIZER metrics=[“accuracy“])
history = model.fit(X_train y_train batch_size=BATCH_SIZE
                        epochs=NB_EPOCH verbose=VERBOSE validation_split=VALIDATION_SPLIT)
score = model.evaluate(X_testy_test verbose=VERBOSE)
print(“test score:“ score[0])
print(“test accurary:“ score[1])

testrun = X_test[9999].reshape(1784)
testlabel = y_test[9999]
print(testrun)
print(testlabel)
plt.imshow(testrun.reshape([2828]))
plt.show()

pred = model.pr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件    11490434  2019-07-04 14:37  mnist.npz
     文件        3753  2019-07-29 15:18  ttlenet.py

评论

共有 条评论