#### 稀疏交互 ##### 稀疏交互的实现

MNIST 原始图片： 1.局部区域的大小

2.局部特征的抽取次数

3.步长 4.边缘填充

4 * 4 的图像，进行了 3 * 3 的局部连接，维度发生了变化。 #### TensorFlow 实现局部连接和权值共享

``````[[-1,-1,-1],
[-1,8,-1],
[-1,-1,-1]]
``````

``````import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt

#引入 MNIST 数据集
mnist = input_data.read_data_sets("/tmp/data/", one_hot=False)

#选取训练集中的第 1 个图像的矩阵
mnist_one=mnist.train.images

plt.subplot(121)
plt.imshow(mnist_one.reshape((28,28)), cmap=plt.cm.gray)

#输出图片的维度，结果是：(784,)
print(mnist_one.shape)

#因为原始的数据是长度是 784 向量，需要转换成 1*28*28*1 的矩阵。
mnist_one_image=mnist_one.reshape((1,28,28,1))

#输出矩阵的维度
print(mnist_one_image.shape)

#滤波器参数
filter_array=np.asarray([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])

#滤波器维度
print(filter_array.shape)

#调整滤波器维度
filter_tensor=filter_array.reshape((3,3,1,1))

#卷机操作
conv_image_tensor=tf.nn.convolution(mnist_one_image,filter=tf.to_float(filter_tensor),padding="SAME")

#返回的张量维度
print(conv_image_tensor.shape)

#调整为二维图片
conv_image=tf.reshape(conv_image_tensor,[28,28])

with tf.Session() as sess:

#获得张量的值
conv_image=sess.run(conv_image)

plt.subplot(122)

#使用 matplotlib 输出为图片
plt.imshow(conv_image, cmap=plt.cm.gray)

plt.show()
`````` ### 池化介绍

#### 池化 这个池化选取的是 2 * 2 的区域，留下值最大点，步长为 2。原来 4 * 4 的图片矩阵池化之后变成了 2 * 2 的图片矩阵。

### 手写数字识别

#### 数据准备

• MNIST 数据集下载

MNIST 数据集可以从 THE MNIST DATABASE of handwritten digits 的网站直接下载。 网址：http://yann.lecun.com/exdb/mnist/

train-images-idx3-ubyte.gz: 训练集图片 train-labels-idx1-ubyte.gz: 训练集列标 t10k-images-idx3-ubyte.gz: 测试集图片 t10k-labels-idx1-ubyte.gz: 测试集列标

TensorFlow 有加载 MNIST 数据库相关的模块，可以在程序运行时直接加载。

``````from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as pyplot

#引入 MNIST 数据集
mnist = input_data.read_data_sets("/tmp/data/", one_hot=False)

#选取训练集中的第 1 个图像的矩阵
mnist_one=mnist.train.images

#输出图片的维度，结果是：(784,)
print(mnist_one.shape)

#因为原始的数据是长度是 784 向量，需要转换成 28*28 的矩阵。
mnist_one_image=mnist_one.reshape((28,28))

#输出矩阵的维度
print(mnist_one_image.shape)

#使用 matplotlib 输出为图片
pyplot.imshow(mnist_one_image)

pyplot.show()
``````

2.转化为二维矩阵之后的打印结果： (28, 28)

3.使用 matplotlib 输出为图片
{"ft_lang_label":"__label__zh","ft_lang_prob":0.8451787,"math_prob":0.94310176,"size":2953,"snap":"2021-21-2021-25","text_gpt3_token_len":1825,"char_repetition_ratio":0.119701594,"word_repetition_ratio":0.10526316,"special_character_ratio":0.2522858,"punctuation_ratio":0.19635628,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.9903856,"pos_list":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"im_url_duplicate_count":[null,6,null,6,null,6,null,6,null,6,null,6,null,6,null,6,null,6,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2021-06-20T22:16:34Z\",\"WARC-Record-ID\":\"<urn:uuid:aa92a496-2433-48ef-8d94-261fde569e79>\",\"Content-Length\":\"17706\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:a32b327b-7c72-44a5-b886-53613261ba5b>\",\"WARC-Concurrent-To\":\"<urn:uuid:71bf94c5-884a-4eab-8c8c-3caa2a6d8220>\",\"WARC-IP-Address\":\"47.104.247.218\",\"WARC-Target-URI\":\"http://tensornews.cn/cnn_implication/\",\"WARC-Payload-Digest\":\"sha1:VUN445IMRUQAP4HS7MOE3JLPLSBM3BQP\",\"WARC-Block-Digest\":\"sha1:ODGRAF5MOVFO4SDYOIDGE7Y7VKWAAKVX\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2021/CC-MAIN-2021-25/CC-MAIN-2021-25_segments_1623488257796.77_warc_CC-MAIN-20210620205203-20210620235203-00259.warc.gz\"}"}