Loading... ## 最新更新 我需要你们先注册kaggle账号,当然不是必须的,不过注册需要翻墙 注册地址是kaggle.com 免费的cpu是不需要认证的,gpu和tpu是需要手机号验证,如果你不会可以联系我 你在本博客下面的评论区回复之后,可以看到我提供给你的kaggle账号 <div class="hideContent">此处内容需要评论回复后(审核通过)方可阅读。</div> <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-e1f0e32532768926a7d523d061dd492451" aria-expanded="true"><div class="accordion-toggle"><span style="">旧文章</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-e1f0e32532768926a7d523d061dd492451" class="collapse in collapse-content"><p></p> 由于各种原因并且现在时间已经过半,争取在3节课完成 所以就直接上代码了 ## 数据集下载:[https://ply.lanzouw.com/iQNh3wokn2b](https://ply.lanzouw.com/iQNh3wokn2b) ## 数据集介绍: MNIST数据集是一个有名的手写数字数据集,在深度学习领域,手写数字识别是一个很经典的学习例子。 解压之后,有两个文件train.csv和test.csv 统计如下:训练数据有42000张手写数字图片,对应0-9,并且第一列为标签 测试数据有28000行,对应0-9,需要用训练完的模型,对这些数据进行预测,并且我会负责把预测结果上传到kaggle“游乐场”,获取测试得分 通过此次活动,我们将初步了解,深度学习,到底是个什么玩意 因为我是看书看文档自学,故我不推荐你们看浪费时间的视频。 我可以有50%的把握,可以在短时间内,让你就算没有python基础,也可以看懂,到底是要干嘛 首先,我们要做什么,我们要做一个模型,他能够把一堆28*28的数组,计算对应成 0-9的一个概率分布值,这是经典的多分类,单标签(一个数据对应一个答案) ## 开始 我们现在先入门纯dense层构成的模型,我们先要知道,dense层他是怎么计算(简单的了解) Dense层(keras中是这么叫的) 全连接的核心操作就是矩阵向量乘积 y = W ∗ x + b w是权重的意思,b是偏置的意思,这个就是我们常见的 一次函数吧,一般叫线性函数,因为图像是一条“线” 在经历过这个运算之后,我们会专门为这一个层定一个激活函数,目前我们只介绍非常常用的 多分类单标签任务,最后一层用softmax 各种预测结果概率之和等于1 这就意味着,我们最后得到的预测结果是一个10个元素的列表 比如数字0就这样表示[1,0,0,0,0,0,0,0,0,0] 数字1就这样表示[0,1,0,0,0,0,0,0,0,0] 以此类推,那么,你如果看过训练数据,那你就会想知道,怎么把0-9逆向为这种数据呢,不然不对应,模型没法匹配啊。所以,我们要先数据预处理,把标签向量化,转成一个10个元素的列表 中间层,我们用relu,他在x正半轴是一个y=x图像,在x负半轴是一个横线 代码如下: ```python import keras #导入keras模块 import numpy as np #导入numpy模块 import pandas as pd # 导入pandas模块 import matplotlib.pyplot as plt #导入matplotlib模块,画图用的的 ``` 我们先处理训练数据,读取之后,我们去掉label列,剩下的代表的是一张张图片数据,用0-256来表示颜色 ```python df = pd.read_csv('train.csv') data = df.drop(['label'],axis=1) train_images = data.values.reshape(42000,28*28) #42000张,一张28*28 正方形 train_images = train_images.astype('float32') / 255 #这一步通常叫数据标准化,一般要求是处理成平均数为0,方差为1的数据 train_images.shape #查看数据的最终形状 (42000, 784) ``` 下面是标签预处理 ```python label = df['label'] from keras.utils import to_categorical #标签向量化有一个快速方法 train_labels = label train_labels = to_categorical(label) train_labels.shape (42000, 10) ``` 我们可以先把模型构建起来了 我当时是这么写的,纯dense没必要那么讲究,稍微大点有点感觉。。。 ```python from keras import models from keras import layers network = models.Sequential() network.add(layers.Dense(1024, activation='relu', input_shape=(28 * 28,))) network.add(layers.Dense(512, activation='relu')) network.add(layers.Dense(512, activation='relu')) network.add(layers.Dense(256, activation='relu')) network.add(layers.Dense(10, activation='softmax')) ``` 课后作业(可以不做) 主要懒得打字了,而且你们如果有时间可以自己去了解,下次我也会提的 Relu函数的图像长什么样? 深度学习优化器有哪些 ![model.png](http://blog.a152.top/usr/uploads/2021/11/2361707872.png) ## 以后将在这里和笔记本上更新 <p></p></div></div></div> Last modification:November 26, 2021 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的内容对你有用,请随意赞赏