| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
TanjaWEP
8年前发布

训练识别数字图片的模型

   <p>本文根据官方教程,通过MNIST数据,使用Softmax Regressio算法训练一个输入784像素的图片,识别出其对应数字的模型</p>    <p>前一篇文章中我们配置了TensorFlow并根据官方教程训练了一个简单的模型,今天我们继续训练另外一个简单的模型。</p>    <p><img src="https://simg.open-open.com/show/ba5e3ceed84bec95ca81a23a5caa0fdc.png"></p>    <p>MNIST包含一个手写的数字,就好像:</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/dacd3dce305a4a8ecfacb6b14f645d1e.png"></p>    <p>这个案例是为了解答:</p>    <ol>     <li>TensorFlow是怎么工作的?</li>     <li>机器学习的核心思想是什么?</li>    </ol>    <p>你可以学习到:</p>    <ol>     <li>MNIST数据、Softmax Regression算法</li>     <li>建立一个可以基于观察图片的每一个像素来识别数字的模型</li>     <li>通过模型浏览上千个案例来训练模型识别数字</li>     <li>通过测试数据,来验证模型的准确度</li>    </ol>    <h2>I. MNIST数据</h2>    <p>数据是在 <a href="/misc/goto?guid=4959616969854868915" rel="nofollow,noindex">Yann LeCun’s website</a> 这上面。</p>    <p>该数据分为三部分</p>    <p>通过分离不同的数据,一部分用于训练,一部分用户测试,一部分用于学习,这样才能验证结果是训练的模型自己生成的。</p>    <ol>     <li>mnist.train: 55_000个数据用于训练</li>     <li>mnist.test: 10_000个数据用于测试</li>     <li>minst.validation: 5_000个数据用于验证</li>    </ol>    <p>每个数据有两部分</p>    <ol>     <li>手写数字的图片(x)( mnist.train.images 、 mnist.test.images ): 28px * 28px = 784px</li>     <li>对应的标签(y)( mnist.train.labels 、 mnist.test.labels )</li>    </ol>    <p>如数字 1 :</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/cf3c4042a8ce8143e6fd1da325a30f08.png"></p>    <ul>     <li>mnist.[train/test].images 是一个tensor,由55_000个由784个点的二维数组组成,数组中的每个值代表每个像素点,像素点有色的根据浅到深是0到1,无色为0,每个数组所呈现的数字对应一个label,我们表示为[55000,784]<br> <img src="https://simg.open-open.com/show/d4448a983fb8d2f4f2cc798195ab50bd.png"></li>     <li>minst.[train/test].labels 也是一个tensor,由55_000个由10个值的一维数组组成,数组中有且仅有一个为1,其余为0,数组的index表示标签所代表的数字,如3表示为[0,0,0,1,0,0,0,0,0,0]],我们表示为[55000,10]<br> <img src="https://simg.open-open.com/show/75c15d1434707c7fd064c58d968318a4.png"></li>    </ul>    <h2>II. Softmax Regression算法</h2>    <p>我们算法要尽量准确的通过图片(784个像素点)所呈现的,让结果中正确的数字所占的比例尽量的高,如给出的图片对应的数字是9,模型运算结果可能是: 80%的概率是9,5%概率是8,15%的概率是其他。</p>    <p>该算法使用场景:从不同的事件中为一个对象分配可能性,因为该算法给我们一个0到1的列表,并且加起来等于1</p>    <p>大概步骤</p>    <ol>     <li>总结输入的数据在某些类中的证据(we add up the evidence of our input being in certain classes)</li>     <li>将证据转化为具体的可能性</li>    </ol>    <p>做像素强度(intensities)的加权值,当图片的强度(intentsity)与某个分类不一致,其权重为负数,当有强有力的证据证明是在那个分类,其权重为正数</p>    <p>最终的模型权重</p>    <p>蓝色为正数权重,红色为负数</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/c978566ad13364267ea031da6d3bd396.png"></p>    <p>大概算法</p>    <p>第i个类型、第j个像素、W为权重、x为输入的图片、b为偏移量</p>    <p>结果: $y = softmax(W_x$ + b)</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/47751d1670e27089c506a8f74291abe2.png"> <img src="https://simg.open-open.com/show/edc0cc5382269aad82557f9b0bf64647.png"> <img src="https://simg.open-open.com/show/e9c2317d800d96fa28295997893e115f.png"></p>    <p> </p>    <p>来自:https://blog.dreamtobe.cn/tensorflow-mnist/</p>    <p> </p>    
 本文由用户 TanjaWEP 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1490319902534.html
技术 机器学习