Python/手写数字mnist数据集获取

Python/手写数字mnist数据集获取

如果使用tensorflow的话,是其自带的,通过以下方式可导入

from tensorflow.keras.datasets import mnist

如本地没有导入后运行的过程中会自动下载,可能会因为某些原因下载失败,再尝试几次。
参考tensorflow官方github:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials
其他的可直接下载的方式(相对麻烦):
下载并解压mnist数据集
MNIST数据集下载

为了实现Python手写数字识别MNIST数据集,可以使用神经网络算法。以下是实现步骤: 1. 导入必要的库和数据集 ```python import numpy as np import matplotlib.pyplot as plt # 读取MNIST数据集 data_file = open("mnist_train_100.csv") data_list = data_file.readlines() data_file.close() ``` 2. 数据预处理 ```python # 将数据集中的每个数字图像转换为28x28的矩阵 all_values = data_list[0].split(',') image_array = np.asfarray(all_values[1:]).reshape((28,28)) # 将图像矩阵可视化 plt.imshow(image_array, cmap='Greys', interpolation='None') plt.show() # 将数据集中的所有数字图像转换为28x28的矩阵,并将其存储在一个numpy数组中 scaled_input = (np.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01 ``` 3. 构建神经网络模型 ```python # 定义神经网络的输入、隐藏和输出层节点数 input_nodes = 784 hidden_nodes = 100 output_nodes = 10 # 初始化权重矩阵 weight_input_hidden = np.random.normal(0.0, pow(input_nodes, -0.5), (hidden_nodes, input_nodes)) weight_hidden_output = np.random.normal(0.0, pow(hidden_nodes, -0.5), (output_nodes, hidden_nodes)) # 定义激活函数 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 计算神经网络的输出 hidden_inputs = np.dot(weight_input_hidden, scaled_input) hidden_outputs = sigmoid(hidden_inputs) final_inputs = np.dot(weight_hidden_output, hidden_outputs) final_outputs = sigmoid(final_inputs) ``` 4. 训练神经网络模型 ```python # 定义目标输出 target = np.zeros(output_nodes) + 0.01 target[int(all_values[0])] = 0.99 # 计算误差 output_errors = target - final_outputs hidden_errors = np.dot(weight_hidden_output.T, output_errors) # 更新权重矩阵 weight_hidden_output += learning_rate * np.dot((output_errors * final_outputs * (1.0 - final_outputs)), np.transpose(hidden_outputs)) weight_input_hidden += learning_rate * np.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), np.transpose(scaled_input)) ``` 5. 测试神经网络模型 ```python # 读取测试数据集 test_data_file = open("mnist_test_10.csv") test_data_list = test_data_file.readlines() test_data_file.close() # 预处理测试数据集 all_values = test_data_list[0].split(',') image_array = np.asfarray(all_values[1:]).reshape((28,28)) plt.imshow(image_array, cmap='Greys', interpolation='None') plt.show() scaled_input = (np.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01 # 计算神经网络的输出 hidden_inputs = np.dot(weight_input_hidden, scaled_input) hidden_outputs = sigmoid(hidden_inputs) final_inputs = np.dot(weight_hidden_output, hidden_outputs) final_outputs = sigmoid(final_inputs) # 输出神经网络的预测结果 print("预测结果:", np.argmax(final_outputs)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值