注: 本文根据阿卡蒂奥的Python深度学习博客文章代码进行调整,修复了少量问题,原文地址:https://blog.csdn.net/akadiao/article/details/78175737
1. 运行环境建议
- Python 2.x
2. 准备
S1. 创建工程目录,名字自定义。
S2. 在上述工程目录中创建空白源码文件main.py
。
S3. 下载MNIST手写数字图像数据集文件 mnist.pkl.gz
,这里给出两个下载地址:
https://gitlab.umiacs.umd.edu/tomg/admm_nets/raw/master/data/mnist.pkl.gz
https://raw.githubusercontent.com/mnielsen/neural-networks-and-deep-learning/master/data/mnist.pkl.gz
S4. 将下载的mnist.pkl.gz
文件拷贝至S1步骤创建的工程目录下,如下图所示:
3. 粘贴代码
在main.py
中粘贴如下代码,代码中包含了数据读取、图像显示、深度网络等部分:
import cPickle
import gzip
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import random
def load_data():
f = gzip.open('mnist.pkl.gz', 'rb')
training_data, validation_data, test_data = cPickle.load(f)
f.close()
return (training_data, validation_data, test_data)
def showimage():
training_set, validation_set, test_set = load_data()
flattened_images = validation_set[0]
images = [np.reshape(f, (-1, 28)) for f in flattened_images]
for i in range(16):
ax = plt.subplot(4, 4, i+1)
ax.matshow(images[i], cmap = matplotlib.cm.binary)
plt.xticks(np.array([]))
plt.yticks(np.array([]))
plt.show()
class Network(object):
def __init__(self, sizes):
self.num_layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) fo