读取mnist手写识别的数据集

mnist手写识别数据集地址:https://pan.baidu.com/s/1Z8xWdPlSZwkOE-Gwy2e0LA  提取码:by4g

里面有一个mnist.pkl的文件,pkl是一个很多的序列组成的文件(也就是一个序列化的东西),它已经把手写识别的图片(28*28)的转化成了一个向量(1,784),然后给出了这个图片的标识0-9。

首先要打开pkl文件,需要用到py包cPickle,这里的open要用rb,因为是要以二进制的方式读取文件

import cPickle
import numpy as np
f = open('I:\wangpengfei-D\DeepLearning_Library\\neural-networks-and-deep-learning-master\data\mnist.pkl', 'rb')
info  = cPickle.load(f)

可以通过下面的代码看看这个数据是什么样子的

print info
print type(info)
print len(info)
print (np.shape(info))

 

可以看出读取的pkl文件的内容info是一个元组,而且是一个长度为3的元组,元组的第一个元素表示50000个训练集,元组的第二个元素表示10000个验证集,元组的第三个元素表示10000个测试集。

print info[0][0] # 输出训练集的样本部分
print info[0][1] # 输出训练集的真是结果部分
print ("training_data:", np.shape(info[0][0])) #训练集样本的形状
print ("training_result_data:", np.shape(info[0][1]))  #训练集真是记过的形状

 

可以看出训练集中每一个样本是一个行向量,当我们将其放入neural network的时候将其要转化为列向量。那么结果向量是一个列向量表示每一个样本的结果,也就是每一个图片的真实代表的数字是多少。

下面的代码用来显示验证集的形状

print info[1][0]
print info[1][1]
print ("validation_data:", np.shape(info[1][0]))
print ("validation_result_data:", np.shape(info[1][1]))

 

表示验证集中有10000个样本,每一个样本的数据是一个行向量,然后10000个验证样本的真实结果是一个维度为10000的列向量。

下面的代码用来显示测试集的形状

print info[2][0]
print info[2][1]
print ("test_data:", np.shape(info[2][0]))
print ("test_result_data:", np.shape(info[2][1]))

 

表示测试集中有10000个样本,每一个样本的数据是一个行向量,然后10000个测试样本的真实结果是一个维度为10000的列向量。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要安装必要的库,包括: - keras - tensorflow - reticulate:在R中调用Python 在R中,我们可以使用以下命令安装这些库: ```R install.packages("keras") install.packages("tensorflow") install.packages("reticulate") ``` 然后,我们可以使用以下代码读取MNIST数据集: ```R library(keras) # 导入数据集 mnist <- dataset_mnist() x_train <- mnist$train$x y_train <- mnist$train$y x_test <- mnist$test$x y_test <- mnist$test$y # 将数据转换为矩阵格式 x_train <- array_reshape(x_train, c(nrow(x_train), 784)) x_test <- array_reshape(x_test, c(nrow(x_test), 784)) # 将数据标准化 x_train <- x_train / 255 x_test <- x_test / 255 # 将标签转换为分类矩阵 y_train <- to_categorical(y_train, 10) y_test <- to_categorical(y_test, 10) ``` 接下来,我们需要在Python环境下实现MNIST手写数字数据集识别。我们可以使用以下代码: ```python import numpy as np from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import RMSprop # 导入数据集 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 将数据格式转换为矩阵并归一化 x_train = x_train.reshape(60000, 784) x_test = x_test.reshape(10000, 784) x_train = x_train.astype('float32') x_test = x_test.astype('float32') x_train /= 255 x_test /= 255 # 将标签转换为分类矩阵 y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10) # 定义模型 model = Sequential() model.add(Dense(512, activation='relu', input_shape=(784,))) model.add(Dropout(0.2)) model.add(Dense(512, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(10, activation='softmax')) model.summary() # 编译模型 model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy']) # 训练模型 history = model.fit(x_train, y_train, batch_size=128, epochs=20, verbose=1, validation_data=(x_test, y_test)) # 评估模型 score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 最后,我们可以在R中调用Python并执行上述代码: ```R library(reticulate) # 加载Python环境 use_python("python") # 导入必要的Python库 keras <- import("keras") numpy <- import("numpy") mnist <- keras$datasets$mnist # 执行Python代码 py_code <- " # 上述Python代码 " py_run_string(py_code) ``` 这样,我们就完成了MNIST手写数字数据集识别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值