tensorflow学习入门笔记
生活随笔
收集整理的這篇文章主要介紹了
tensorflow学习入门笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<div class="note"><div class="post"><div class="article"><h1 class="title">tensorflow學習筆記系列(三):tensorflow入門與基本使用</h1><!-- 作者區域 --><div class="author"><a class="avatar" href="/u/b43a53b0a757"><img src="//upload.jianshu.io/users/upload_avatars/2359267/76571136b25e.jpeg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96" alt="96">
</a> <div class="info"><span class="name"><a href="/u/b43a53b0a757">mac在路上</a></span><!-- 關注用戶按鈕 --><a class="btn btn-success follow"><i class="iconfont ic-follow"></i><span>關注</span></a><!-- 文章數據信息 --><div class="meta"><!-- 如果文章更新時間大于發布時間,那么使用 tooltip 顯示更新時間 --><span class="publish-time" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="最后編輯于 2017.12.06 02:47">2017.03.09 15:40*</span><span class="wordage">字數 3163</span><span class="views-count">閱讀 9234</span><span class="comments-count">評論 2</span><span class="likes-count">喜歡 14</span></div></div><!-- 如果是當前作者,加入編輯按鈕 --></div><!-- 文章內容 --><div data-note-content="" class="show-content"><div class="show-content-free"><p><strong><em><u>版權所有,轉載請注明出處</u></em></strong></p>
<hr>
<p>其它相關文章:<br>
<a href="https://www.jianshu.com/p/1d63f25b476a" target="_blank">tensorflow學習筆記系列(一):前言</a><br>
<a href="https://www.jianshu.com/p/4b0992253626" target="_blank">tensorflow學習筆記系列(二):tensorflow簡介與安裝</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(四):tensorflow實現自動編碼機</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(五):tensorflow實現多層感知機</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(六):tensorflow實現卷積神經網絡</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(七):神經網絡的一些理論知識</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(八):TensorBoard介紹</a><br>
<a href="" target="_blank">tensorflow學習筆記系列(九):tensorflow源碼解析</a></p>
<ul>
<li><strong><u>說明:</u></strong></li>
<li>目前已完成(一)~(三)</li>
<li>該內容為本人學習tensorflow過程中的筆記,皆為個人理解,難免會存在各種問題,有不當之處請大家批評指正!</li>
</ul>
<hr>
<p>基本上每一個語言或者工具都有自己的“hello world” demo,那么學習它們一般都會從這個“hello world”開始。今天我們就來看看tensorflow的“hello world”(非官網)。<br>
在開始編寫“hello world”之前我們先看看tensorflow的編程模型。</p>
<h1>一. tensorflow編程模型簡介</h1>
<p>這部分的一個很好的教程是官網上的<a href="https://link.jianshu.com?t=https://www.tensorflow.org/versions/r0.10/get_started/basic_usage#basic-usage" target="_blank" rel="nofollow">Basic Usage</a>,講解的還是很清晰的。</p>
<p>Tensorflow中的計算可以表示為一個有向圖(directed graph),或稱計算圖(computation graph),其中每一個運算操作將作為一個節點(node),節點與節點之間的連接成為邊(edge),而在計算圖的邊中流動(flow)的數據被稱為張量(tensor),所以形象的看整個操作就好像數據(tensor)在計算圖(computation graphy)中沿著邊(edge)流過(flow)一個個節點(node),這就是tensorflow名字的由來的。</p>
<div class="image-package">
<div class="image-container" style="max-width: 252px; max-height: 448px; background-color: transparent;">
<div class="image-container-fill" style="padding-bottom: 177.78%;"></div>
<div class="image-view" data-width="252" data-height="448"><img data-original-src="//upload-images.jianshu.io/upload_images/2359267-a48bb63667981b9a.gif" data-original-width="252" data-original-height="448" data-original-format="image/gif" data-original-filesize="382923" style="cursor: zoom-in;" class="" src="//upload-images.jianshu.io/upload_images/2359267-a48bb63667981b9a.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/252"></div>
</div>
<div class="image-caption"></div>
</div>
<p>計算圖中的每個節點可以有任意多個輸入和任意多個輸出,每個節點描述了一種運算操作(operation, op),節點可以算作運算操作的實例化(instance)。計算圖描述了數據的計算流程,它也負責維護和更新狀態,用戶可以對計算圖的分支進行條件控制或循環操作。用戶可以使用pyton、C++、Go、Java等語言設計計算圖。tensorflow通過計算圖將所有的運算操作全部運行在python外面,比如通過c++運行在cpu或通過cuda運行在gpu 上,所以實際上python只是一種接口,真正的核心計算過程還是在底層采用c++或cuda在cpu或gpu上運行。</p>
<p>一個 TensorFlow圖描述了計算的過程. 為了進行計算, 圖必須在會話(session)里被啟動. 會話將圖的op分發到諸如CPU或GPU之的備上, 同時提供執行op的方法. 這些方法執行后, 將產生的tensor返回. 在Python語言中, 返回的tensor是numpy ndarray對象; 在C和C++語言中, 返回的tensor是tensorflow::Tensor實例。</p>
<p>從上面的描述中我們可以看到,tensorflow的幾個比較重要的概念:tensor, computation graphy, node, session。正如前面所說,整個操作就好像數據(tensor)在計算圖(computation graphy)中沿著邊(edge)流過(flow)一個個節點(node),然后通過會話(session)啟動計算。所以簡單來說,要完成這整個過程,我們需要的東西是要定義數據、計算圖和計算圖上的節點,以及啟動計算的會話。所以在實際使用中我們要做的大部分工作應該就是定義這些內容了。</p>
<h1>二. tensorflow基本使用</h1>
<p>正如官方教程里所說:</p>
<blockquote>
<p>To use TensorFlow you need to understand how TensorFlow:</p>
</blockquote>
<ul>
<li>Represents computations as graphs.</li>
<li>Executes graphs in the context of Sessions.</li>
<li>Represents data as tensors.</li>
<li>Maintains state with Variables.</li>
<li>Uses feeds and fetches to get data into and out of arbitrary operations.</li>
</ul>
<p>我們只有理解了這些概念,明白它們分別是做什么的,才能掌握tensorflow的使用方法。下面簡單介紹下這些概念及使用。</p>
<ul>
<li>計算圖(computation graphy)<br>
計算圖是由一個個節點和連接各個節點的邊組成,因此要定義一個計算圖,只需要定義好各個節點以及節點的輸入輸出(對應計算圖的邊)。節點代表各種操作,如加法、乘法、卷積運算等等,輸入輸出主要是各種數據(tensor)。下面是一個簡單的計算圖定義方法示例(來自<a href="https://link.jianshu.com?t=https://www.tensorflow.org/versions/r0.10/get_started/basic_usage#basic-usage" target="_blank" rel="nofollow">官網</a>):</li>
</ul>
<pre class="hljs python"><code class="python"><span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf<span class="hljs-comment"># Create a Constant op that produces a 1x2 matrix. The op is</span>
<span class="hljs-comment"># added as a node to the default graph.</span>
<span class="hljs-comment">#</span>
<span class="hljs-comment"># The value returned by the constructor represents the output</span>
<span class="hljs-comment"># of the Constant op.</span>
matrix1 = tf.constant([[<span class="hljs-number">3.</span>, <span class="hljs-number">3.</span>]])<span class="hljs-comment"># Create another Constant that produces a 2x1 matrix.</span>
matrix2 = tf.constant([[<span class="hljs-number">2.</span>],[<span class="hljs-number">2.</span>]])<span class="hljs-comment"># Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs.</span>
<span class="hljs-comment"># The returned value, 'product', represents the result of the matrix</span>
<span class="hljs-comment"># multiplication.</span>
product = tf.matmul(matrix1, matrix2)
</code></pre>
<p>當然,我們也可以添加更多更復雜的操作(operation)的節點(node)到計算圖(computation graphy)中,如果增加一些卷積網絡節點、全連接網絡節點等等就可以組建一個神經網絡計算圖了。</p>
<ul>
<li>節點(node)<br>
計算圖中的每個節點可以有任意多個輸入和任意多個輸出,每個節點描述了一種運算操作(operation, op),節點可以算作運算操作的實例化(instance)。一種運算操作代表了一種類型的抽象運算,比如矩陣乘法貨響亮加法。tensorflow內建了很多種運算操作,如下表所示:</li>
</ul>
<table>
<thead>
<tr>
<th>類型</th>
<th style="text-align:left">示例</th>
</tr>
</thead>
<tbody>
<tr>
<td>標量運算</td>
<td style="text-align:left">Add、Sub、Mul、Div、Exp、Log、Greater、Less、Equal</td>
</tr>
<tr>
<td>向量運算</td>
<td style="text-align:left">Concat、Slice、Splot、Constant、Rank、Shape、Shuffle</td>
</tr>
<tr>
<td>矩陣運算</td>
<td style="text-align:left">Matmul、MatrixInverse、MatrixDeterminant</td>
</tr>
<tr>
<td>帶狀態的運算</td>
<td style="text-align:left">Variable、Assign、AssignAdd</td>
</tr>
<tr>
<td>神經網絡組件</td>
<td style="text-align:left">SoftMax、Sigmoid、ReLU、Convolution2D、MaxPooling</td>
</tr>
<tr>
<td>存儲、恢復</td>
<td style="text-align:left">Save、Restore</td>
</tr>
<tr>
<td>隊列及同步運算</td>
<td style="text-align:left">Enqueue、Dequeue、MutexAcquire、MutexRelease</td>
</tr>
<tr>
<td>控制流</td>
<td style="text-align:left">Merge、Switch、Enter、Leave、NextIteration</td>
</tr>
</tbody>
</table>
<p>在tensorflow中,也可以通過注冊機制加入新的運算操作或者運算核,這和torch上的注冊機制類似。</p>
<ul>
<li>會話(session)<br>
正如我們前面所說,計算圖里描述的計算并沒有真正執行,只是進行了定義和描述,要實際執行我們就需要在會話(session)里被啟動. 這時session才會將計算圖上的節點操作op分發到諸如CPU或GPU之類的設備上, 同時提供執行op的方法. 這些方法執行后,將產生的tensor返回.<br>
要啟動計算圖,我們收下需要定義一個session對象:</li>
</ul>
<pre class="hljs undefined"><code>sess = tf.Session()
</code></pre>
<p>啟動操作,最簡單的就是調用函數run:</p>
<pre class="hljs undefined"><code>result = sess.run(product)
</code></pre>
<p>tensorflow還支持分布式session,將計算圖布置到多個機器上進行計算。由于我這邊不具備該環境,就不介紹這部分內容了。<br>
另外tensorflow還支持交互環境下采用<code>InteractiveSession</code>定義一個交互session,然后所有的操作都默認在該session上運行,可以直接調用<code>Tensor.eval()</code>和<code>Operation.run()</code>兩個方法,如:</p>
<pre class="hljs php"><code class="php"><span class="hljs-comment"># Enter an interactive TensorFlow Session.</span>
import tensorflow <span class="hljs-keyword">as</span> tf
sess = tf.InteractiveSession()x = tf.Variable([<span class="hljs-number">1.0</span>, <span class="hljs-number">2.0</span>])
a = tf.constant([<span class="hljs-number">3.0</span>, <span class="hljs-number">3.0</span>])<span class="hljs-comment"># Initialize 'x' using the run() method of its initializer op.</span>
x.initializer.run()<span class="hljs-comment"># Add an op to subtract 'a' from 'x'. Run it and print the result</span>
sub = tf.sub(x, a)
<span class="hljs-keyword">print</span>(sub.<span class="hljs-keyword">eval</span>())
<span class="hljs-comment"># ==> [-2. -1.]</span><span class="hljs-comment"># Close the Session when we're done.</span>
sess.close()
</code></pre>
<ul>
<li>數據(tensor)<br>
TensorFlow程序使用tensor數據結構來代表所有的數據, 計算圖中的節點間傳遞的數據都是tensor. 你可以把TensorFlow tensor看作是一個n維的數組或列表. 一個 tensor包含一個靜態類型rank, 和一個shape。</li>
<li>變量(Variable)<br>
在tensorflow里有一類數據比較特殊,那就是我們需要在整個計算圖執行過程中需要保存的狀態。比如我們在進行神經網絡訓練時要時刻保存并更新的網絡參數,這時我們就需要用到Varibale來保存這些參數。其實,我們在前面的示例中已經用到了變量的定義了,它的定義關鍵字為<code>Variable</code>,如上面的<code>x = tf.Variable([1.0, 2.0])</code>。</li>
<li>feed & fetch<br>
我們都知道,進行機器學習或者神經網絡訓練時,都需要大量的訓練數據。細心的朋友可能注意到,我們前面一直沒講到訓練數據怎么定義,怎么輸入到網絡里。實際上,tensorflow提供了一個feed機制來將tensor直接放置到計算圖的任意節點操作上去。“feed”這個詞用的很形象啊,就像我們在上課學習時,老師拿課本里的各種例子、習題往我們腦子里喂。那么,這個利用這個feed機制我們就可以把訓練數據“喂”到計算圖的輸入中去。一般我們采用placeholder來指定一個feed操作,這個placeholder就像是一個容器一樣來接收訓練數據,然后在最終進行計算時只需要用placehoder里的數據替換計算圖的輸入量就可以了。一個簡單的例子:</li>
</ul>
<pre class="hljs python"><code class="python">input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)<span class="hljs-keyword">with</span> tf.Session() <span class="hljs-keyword">as</span> sess:print(sess.run([output], feed_dict={input1:[<span class="hljs-number">7.</span>], input2:[<span class="hljs-number">2.</span>]}))
</code></pre>
<p>采用兩個placeholder操作來定義兩個輸入,在后面的see.run()里采用feed_dict替換成真正的訓練數據,feed_dict里的才是真正的數據。一般情況,placeholder和feed_dict是搭配使用的。<br>
fetch,正如其字面意思,就是取回數據的意思。我們將計算圖部署到session上進行計算后,需要將計算結果取回,這就是一個fetch。下面是取回多個tensor的例子:</p>
<pre class="hljs python"><code class="python">input1 = tf.constant(<span class="hljs-number">3.0</span>)
input2 = tf.constant(<span class="hljs-number">2.0</span>)
input3 = tf.constant(<span class="hljs-number">5.0</span>)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)
<span class="hljs-keyword">with</span> tf.Session() <span class="hljs-keyword">as</span> sess:result = sess.run([mul, intermed])<span class="hljs-keyword">print</span> result
</code></pre>
<p>上面就是tensorflow編程模型的一些基本概念和內容。通過上面的介紹,我們可以用一句話來總結tensorflow的一個工作流程:</p>
<p>那么我們也可以簡單總結出tensorflow編程的一個基本步驟:</p>
<ol>
<li>定義數據</li>
<li>定義計算圖與變量</li>
<li>定義會話</li>
<li>進行計算</li>
</ol>
<h1>三. 用tensorflow搭建神經網絡“hello world”</h1>
<p>按照我們上一節介紹的tensorflow編程的基本步驟,我們來搭建我們的第一個神經網絡——基于mnist數據集的手寫數字識別,即基于圖片的10分類問題。<br>
此部分可以參考官網教程<a href="https://link.jianshu.com?t=https://www.tensorflow.org/versions/r0.12/tutorials/mnist/beginners/index.html" target="_blank" rel="nofollow">MNIST For ML Beginners</a>。<br>
MNIST是一個簡單的機器視覺數據集,如下圖所示,它有幾萬張28×28像素的手寫數字組成,這些圖片只包含灰度信息,我們的任務就是對這些手寫數字進行分類,轉成0~9一共10類。<br>
</p><div class="image-package">
<div class="image-container" style="max-width: 636px; max-height: 159px;">
<div class="image-container-fill" style="padding-bottom: 25.0%;"></div>
<div class="image-view" data-width="636" data-height="159"><img data-original-src="//upload-images.jianshu.io/upload_images/2359267-e23300ae69bf6cf9.png" data-original-width="636" data-original-height="159" data-original-format="image/png" data-original-filesize="21268" style="cursor: zoom-in;" class="image-loading"></div>
</div>
<div class="image-caption"></div>
</div><p></p>
<p><strong>1.定義數據</strong><br>
在神經網絡里我們需要定義的數據就是輸入訓練/測試數據,而變量用來存儲網絡模型里的各種參數。如:</p>
<pre class="hljs python"><code class="python"><span class="hljs-comment"># 輸入數據(包括訓練數據和測試數據)</span>
x = tf.placeholder( tf.float32, [<span class="hljs-keyword">None</span>, <span class="hljs-number">784</span>] )
y_ = tf.placeholder( tf.float32, [<span class="hljs-keyword">None</span>, <span class="hljs-number">10</span>] )
</code></pre>
<p>這里我們把圖片的28<em>28個像素展開成一維列向量(28</em>28-784)<br>
<strong>2.定義計算圖與變量</strong><br>
對于神經網絡來說,涉及到的操作主要有三部分:網絡模型定義,損失函數定義、訓練/優化方法定義。那么我們的計算圖基本也由這三部分的定義組成。(當然還可能包括其它部分,如輸入數據初始化操作,網絡參數初始化等等,這里我們不討論)</p>
<ul>
<li>網絡模型定義<br>
這里我們定義一個最簡單的單層全連接網絡,計算公式為:<code>y=Wx+b</code>,然后利用softmax來計算預測概率,預測概率最大的對應預測的分類。我需要定義兩個變量來保存網絡參數<code>W</code>和<code>b</code>的狀態。<br>
<div class="image-package">
<div class="image-container" style="max-width: 700px; max-height: 279px;">
<div class="image-container-fill" style="padding-bottom: 39.94%;"></div>
<div class="image-view" data-width="2907" data-height="1161"><img data-original-src="//upload-images.jianshu.io/upload_images/2359267-4361a7bbfea07c3d.png" data-original-width="2907" data-original-height="1161" data-original-format="image/png" data-original-filesize="421224" style="cursor: zoom-in;" class="image-loading"></div>
</div>
<div class="image-caption"></div>
</div>
</li>
</ul>
<pre class="hljs undefined"><code>W = tf.Variable( tf.zeros([784,10]) )
b = tf.Variable( tf.zeros([10]) )
y = tf.nn.softmax( tf.matmul(x,W) + b )
</code></pre>
<ul>
<li>損失函數定義<br>
采用cross-entropy作為損失函數,它的公式為:$H_{y'}\left(y\right)=-\underset{i}{{\textstyle \sum}}y'<em>{i}\log\left(y</em>{i}\right)$。(才發現簡書竟然不支持Latex,尷尬。。。)<br>
<div class="image-package">
<div class="image-container" style="max-width: 223px; max-height: 54px;">
<div class="image-container-fill" style="padding-bottom: 24.22%;"></div>
<div class="image-view" data-width="223" data-height="54"><img data-original-src="//upload-images.jianshu.io/upload_images/2359267-215684d665a71a06.png" data-original-width="223" data-original-height="54" data-original-format="image/png" data-original-filesize="3569" style="cursor: zoom-in;" class="image-loading"></div>
</div>
<div class="image-caption"></div>
</div>
</li>
</ul>
<pre class="hljs cpp"><code class="cpp">cross_entropy = tf.reduce_mean( -tf.reduce_sum( y_*tf.<span class="hljs-built_in">log</span>(y), reduction_indices=[<span class="hljs-number">1</span>] ) )
</code></pre>
<ul>
<li>訓練/優化方法定義<br>
神經網絡常采用SGD(Stochastic Gradient Descent)進行網絡的優化訓練。tensorflow會自動根據前面定義的計算圖進行forward和backward計算并更新參數。</li>
</ul>
<pre class="hljs undefined"><code>train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
</code></pre>
<p><strong>3.定義會話</strong><br>
按照前面的方法,定義一個session即可。但是還要記住對所有的變量進行全局初始化。</p>
<pre class="hljs bash"><code class="bash">sess = tf.InteractiveSession()
tf.global_variables_initializer().run() <span class="hljs-comment">#由于是InteractiveSession可以直接run</span>
</code></pre>
<p>或者</p>
<pre class="hljs undefined"><code>sess = tf.Session()
init = tf.global_variables_initializer()
sess.run()
</code></pre>
<p><strong>4.進行計算</strong><br>
對于神經網絡來說,就是要開始迭代進行訓練和評估,降低損失函數。</p>
<pre class="hljs bash"><code class="bash"><span class="hljs-comment"># training</span>
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(10000):batch_xs, batch_ys = mnist.train.next_batch(100)train_step.run( {x:batch_xs, y_:batch_ys} ) <span class="hljs-comment">#InteractiveSession</span>
<span class="hljs-comment"># sess.run(train_step, feed_dict={x:batch_xs, y_:batch_ys}) #非InteractiveSession</span>
<span class="hljs-comment"># eval</span>
correct_prediction = tf.equal( tf.argmax(y,1), tf.argmax(y_,1) )
accuracy = tf.reduce_mean( tf.cast(correct_prediction, tf.float32) )
<span class="hljs-built_in">print</span>(accuracy.eval( {x:mnist.test.images, y_:mnist.test.labels} )) <span class="hljs-comment">#InteractiveSession</span>
<span class="hljs-built_in">print</span>(sess.run(accuracy, feed_dict={x:mnist.test.images, y_:mnist.test.labels})<span class="hljs-comment">#非InteractiveSession</span>
</code></pre>
<p>以上就是整個神經網絡的搭建過程。這里只采用的單層全連接網絡,但是準確率依然達到了92%左右,如果我們采用卷積神經網絡等更復雜的網絡,可以將準確率提高到99%。<br>
以上只是搭建一個神經網絡的基本框架,當然實際中還是數據預處理、參數初始化、超參數設置等問題,這些就需要在實際使用過程中慢慢學習了。<br>
以下是該網絡的全部代碼:</p>
<pre class="hljs python"><code class="python"><span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">from</span> tensorflow.examples.tutorials.mnist <span class="hljs-keyword">import</span> input_data
mnist = input_data.read_data_sets(<span class="hljs-string">"MNIST_data/"</span>,one_hot=<span class="hljs-keyword">True</span>)x = tf.placeholder( tf.float32, [<span class="hljs-keyword">None</span>, <span class="hljs-number">784</span>] )
y_ = tf.placeholder( tf.float32, [<span class="hljs-keyword">None</span>, <span class="hljs-number">10</span>] )W = tf.Variable( tf.zeros([<span class="hljs-number">784</span>,<span class="hljs-number">10</span>]) )
b = tf.Variable( tf.zeros([<span class="hljs-number">10</span>]) )
y = tf.nn.softmax( tf.matmul(x,W) + b )cross_entropy = tf.reduce_mean( -tf.reduce_sum( y_*tf.log(y), reduction_indices=[<span class="hljs-number">1</span>] ) )train_step = tf.train.GradientDescentOptimizer(<span class="hljs-number">0.5</span>).minimize(cross_entropy)session = tf.InteractiveSession()
tf.global_variables_initializer().run()<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">1000</span>):batch_xs, batch_ys = mnist.train.next_batch(<span class="hljs-number">100</span>)train_step.run( {x:batch_xs, y_:batch_ys} )<span class="hljs-comment"># print(i)</span>correct_prediction = tf.equal( tf.argmax(y,<span class="hljs-number">1</span>), tf.argmax(y_,<span class="hljs-number">1</span>) )
accuracy = tf.reduce_mean( tf.cast(correct_prediction, tf.float32) )
print(accuracy.eval( {x:mnist.test.images, y_:mnist.test.labels} )) </code></pre>
<p>大家也可以在<a href="" target="_blank">tensorflow.examples.tutorials</a>下找到官方的示例代碼,或者我本人的<a href="https://link.jianshu.com?t=https://github.com/SSSuperMac/tensorflow-study" target="_blank" rel="nofollow">github</a>上查看</p>
<p><strong><div align = center>-END-</div></strong></p>
<hr>
<p><strong><em><u>版權所有,轉載請注明出處</u></em></strong></p></div></div></div><!-- 如果是付費文章,未購買,則顯示購買按鈕 --><!-- 連載目錄項 --><!-- 如果是付費文章 --><!-- 如果是付費連載,已購買,且作者允許贊賞,則顯示付費信息和贊賞 --><div id="free-reward-panel" class="support-author"><p>小禮物走一走,來簡書關注我</p> <div class="btn btn-pay">贊賞支持</div> <div class="supporter"><ul class="support-list"></ul> <!----></div> <!----> <!----></div><div class="show-foot"><a class="notebook" href="/nb/4870754"><i class="iconfont ic-search-notebook"></i><span>深度學習</span>
</a> <div class="copyright" data-toggle="tooltip" data-html="true" data-original-title="轉載請聯系作者獲得授權,并標注“簡書作者”。">? 著作權歸作者所有</div><div class="modal-wrap" data-report-note=""><a id="report-modal">舉報文章</a></div></div><!-- 文章底部作者信息 --><div class="follow-detail"><div class="info"><a class="avatar" href="/u/b43a53b0a757"><img src="//upload.jianshu.io/users/upload_avatars/2359267/76571136b25e.jpeg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96" alt="96">
</a> <a class="btn btn-success follow"><i class="iconfont ic-follow"></i><span>關注</span></a><a class="title" href="/u/b43a53b0a757">mac在路上</a><p>寫了 35508 字,被 229 人關注,獲得了 139 個喜歡</p></div><div class="signature">在路上……</div></div><div class="meta-bottom"><div data-v-6ddd02c6="" class="like"><div data-v-6ddd02c6="" class="btn like-group"><div data-v-6ddd02c6="" class="btn-like"><a data-v-6ddd02c6="">喜歡</a></div> <div data-v-6ddd02c6="" class="modal-wrap"><a data-v-6ddd02c6="">14</a></div></div> <!----></div><div class="share-group"><a class="share-circle" data-action="weixin-share" data-toggle="tooltip" data-original-title="分享到微信"><i class="iconfont ic-wechat"></i></a><a class="share-circle" data-action="weibo-share" data-toggle="tooltip" href="javascript:void((function(s,d,e,r,l,p,t,z,c){var%20f='http://v.t.sina.com.cn/share/share.php?appkey=1881139527',u=z||d.location,p=['&url=',e(u),'&title=',e(t||d.title),'&source=',e(r),'&sourceUrl=',e(l),'&content=',c||'gb2312','&pic=',e(p||'')].join('');function%20a(){if(!window.open([f,p].join(''),'mb',['toolbar=0,status=0,resizable=1,width=440,height=430,left=',(s.width-440)/2,',top=',(s.height-430)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();})(screen,document,encodeURIComponent,'','','', '推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》( 分享自 @簡書 )','https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weibo','頁面編碼gb2312|utf-8默認gb2312'));" data-original-title="分享到微博"><i class="iconfont ic-weibo"></i></a><a class="share-circle" data-toggle="tooltip" href="http://cwb.assets.jianshu.io/notes/images/9963920/weibo/image_759987196792.jpg" target="_blank" data-original-title="下載長微博圖片"><i class="iconfont ic-picture"></i></a><a class="share-circle more-share" tabindex="0" data-toggle="popover" data-placement="top" data-html="true" data-trigger="focus" href="javascript:void(0);" data-content="<ul class="share-list"><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=qzone')+'&title='+e('推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》'),x=function(){if(!window.open(r,'qzone','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-zone"></i><span>分享到QQ空間</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://twitter.com/share?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=twitter')+'&text='+e('推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》( 分享自 @jianshucom )')+'&related='+e('jianshucom'),x=function(){if(!window.open(r,'twitter','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-twitter"></i><span>分享到Twitter</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://www.facebook.com/dialog/share?app_id=483126645039390&display=popup&href=https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=facebook',x=function(){if(!window.open(r,'facebook','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-facebook"></i><span>分享到Facebook</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://plus.google.com/share?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=google_plus'),x=function(){if(!window.open(r,'google_plus','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-google"></i><span>分享到Google+</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,s1=window.getSelection,s2=d.getSelection,s3=d.selection,s=s1?s1():s2?s2():s3?s3.createRange().text:'',r='http://www.douban.com/recommend/?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=douban')+'&title='+e('tensorflow學習筆記系列(三):tensorflow入門與基本使用')+'&sel='+e(s)+'&v=1',x=function(){if(!window.open(r,'douban','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r+'&r=1'};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()"><i class="social-icon-sprite social-icon-douban"></i><span>分享到豆瓣</span></a></li></ul>" data-original-title="" title="">更多分享</a></div></div><a id="web-note-ad-1" target="_blank" href="/apps/download?utm_source=nbc"><img src="//cdn2.jianshu.io/assets/web/web-note-ad-1-10f08e404d3887d2d45a4bc8f1831403.png" alt="Web note ad 1"></a><div id="vue_comment"></div></div><div class="side-tool"><ul><li data-placement="left" data-toggle="tooltip" data-container="body" data-original-title="回到頂部" style="display: none;"><a class="function-button"><i class="iconfont ic-backtop"></i></a></li> <!----> <!----> <!----> <li data-placement="left" data-toggle="tooltip" data-container="body" data-original-title="分享文章"><a tabindex="0" role="button" data-toggle="popover" data-placement="left" data-html="true" data-trigger="focus" href="javascript:void(0);" data-content="<ul class='share-list'><li><a class="weixin-share"><i class="social-icon-sprite social-icon-weixin"></i><span>分享到微信</span></a></li><li><a href="javascript:void((function(s,d,e,r,l,p,t,z,c){var%20f='http://v.t.sina.com.cn/share/share.php?appkey=1881139527',u=z||d.location,p=['&url=',e(u),'&title=',e(t||d.title),'&source=',e(r),'&sourceUrl=',e(l),'&content=',c||'gb2312','&pic=',e(p||'')].join('');function%20a(){if(!window.open([f,p].join(''),'mb',['toolbar=0,status=0,resizable=1,width=440,height=430,left=',(s.width-440)/2,',top=',(s.height-430)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();})(screen,document,encodeURIComponent,'','','', '推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》( 分享自 @簡書 )','https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weibo','頁面編碼gb2312|utf-8默認gb2312'));"><i class='social-icon-sprite social-icon-weibo'></i><span>分享到微博</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=qzone')+'&title='+e('推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》'),x=function(){if(!window.open(r,'qzone','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class='social-icon-sprite social-icon-zone'></i><span>分享到QQ空間</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://twitter.com/share?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=twitter')+'&text='+e('推薦 mac在路上 的文章《tensorflow學習筆記系列(三):tensorflow入門與基本使用》( 分享自 @jianshucom )')+'&related='+e('jianshucom'),x=function(){if(!window.open(r,'twitter','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class='social-icon-sprite social-icon-twitter'></i><span>分享到Twitter</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://www.facebook.com/dialog/share?app_id=483126645039390&display=popup&href=https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=facebook',x=function(){if(!window.open(r,'facebook','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class='social-icon-sprite social-icon-facebook'></i><span>分享到Facebook</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://plus.google.com/share?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=google_plus'),x=function(){if(!window.open(r,'google_plus','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class='social-icon-sprite social-icon-google'></i><span>分享到Google+</span></a></li><li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,s1=window.getSelection,s2=d.getSelection,s3=d.selection,s=s1?s1():s2?s2():s3?s3.createRange().text:'',r='http://www.douban.com/recommend/?url='+e('https://www.jianshu.com/p/87581c7082ba?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=douban')+'&title='+e('tensorflow學習筆記系列(三):tensorflow入門與基本使用')+'&sel='+e(s)+'&v=1',x=function(){if(!window.open(r,'douban','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r+'&r=1'};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()"><i class='social-icon-sprite social-icon-douban'></i><span>分享到豆瓣</span></a></li></ul>" data-original-title="" title="" class="function-button"><i class="iconfont ic-share"></i></a> <!----></li> <!----></ul></div>
</div>
總結
以上是生活随笔為你收集整理的tensorflow学习入门笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow函数总结
- 下一篇: tensorflow编程入门笔记之一