Code For Better 谷歌开发者之声 ——Tensorflow与深度学习
給大家推薦一款喪心病狂的API測(cè)試工具:Apifox。?
Apifox 是接口管理、開(kāi)發(fā)、測(cè)試全流程集成工具,定位 Postman + Swagger + Mock + JMeter。點(diǎn)擊此處跳轉(zhuǎn)體驗(yàn)
目錄
一、TensorFlow簡(jiǎn)介
二、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)
2.1 什么是機(jī)器學(xué)習(xí)
2.2? 什么是深度學(xué)習(xí)
2.3 機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用
2.4 趨勢(shì)
三、TensorFlow實(shí)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)
一、TensorFlow簡(jiǎn)介
? ? TensorFlow 是由 Google 團(tuán)隊(duì)開(kāi)發(fā)的深度學(xué)習(xí)框架之一,它是一個(gè)完全基于 Python 語(yǔ)言設(shè)計(jì)的開(kāi)源的軟件。TensorFlow 的初衷是以最簡(jiǎn)單的方式實(shí)現(xiàn)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的概念,它結(jié)合了計(jì)算代數(shù)的優(yōu)化技術(shù),使它便計(jì)算許多數(shù)學(xué)表達(dá)式。?
? ? TensorFlow 可以訓(xùn)練和運(yùn)行深度神經(jīng)網(wǎng)絡(luò),它能應(yīng)用在許多場(chǎng)景下,比如,圖像識(shí)別、手寫(xiě)數(shù)字分類、遞歸神經(jīng)網(wǎng)絡(luò)、單詞嵌入、自然語(yǔ)言處理、視頻檢測(cè)等等。TensorFlow 可以運(yùn)行在多個(gè) CPU 或 GPU 上,同時(shí)它也可以運(yùn)行在移動(dòng)端操作系統(tǒng)上(如安卓、IOS 等),它的架構(gòu)靈活,具有良好的可擴(kuò)展性,能夠支持各種網(wǎng)絡(luò)模型(如OSI七層和TCP/IP四層)。
TensorFlow官方網(wǎng)站有兩個(gè),訪問(wèn)其中一個(gè)就可以,它們分別如下 :
- 關(guān)于TensorFlow | TensorFlow中文官網(wǎng)
- https://www.tensorflow.org/
TensorFlow有以下重要功能 -
- 它包含一個(gè)叫做張量概念,用來(lái)創(chuàng)建多維數(shù)組,優(yōu)化和計(jì)算數(shù)學(xué)表達(dá)式。
- 它包括深度神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)技術(shù)的編程支持。
- 它包括具有各種數(shù)據(jù)集的高可擴(kuò)展計(jì)算功能。
二、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)
2.1 什么是機(jī)器學(xué)習(xí)
通常,為了實(shí)現(xiàn)人工智能,我們使用機(jī)器學(xué)習(xí)。我們有幾種算法用于機(jī)器學(xué)習(xí)。例如:
Find-S算法,決策樹(shù)算法(Decision trees),隨機(jī)森林算法(Random forests),人工神經(jīng)網(wǎng)絡(luò)
通常,有3種類型的學(xué)習(xí)算法:
1,監(jiān)督機(jī)器學(xué)習(xí)算法用于進(jìn)行預(yù)測(cè)。此外,該算法搜索分配給數(shù)據(jù)點(diǎn)的值標(biāo)簽內(nèi)的模式。
2,無(wú)監(jiān)督機(jī)器學(xué)習(xí)算法:沒(méi)有標(biāo)簽與數(shù)據(jù)點(diǎn)相關(guān)聯(lián)。這些ML算法將數(shù)據(jù)組織成一組簇。此外,它需要描述其結(jié)構(gòu),使復(fù)雜的數(shù)據(jù)看起來(lái)簡(jiǎn)單,有條理,便于分析。
3,增強(qiáng)機(jī)器學(xué)習(xí)算法:我們使用這些算法來(lái)選擇動(dòng)作。此外,我們可以看到它基于每個(gè)數(shù)據(jù)點(diǎn)。一段時(shí)間后,算法改變其策略以更好地學(xué)習(xí)。
2.2? 什么是深度學(xué)習(xí)
機(jī)器學(xué)習(xí)只關(guān)注解決現(xiàn)實(shí)問(wèn)題。它還需要更加智能的一些想法。機(jī)器學(xué)習(xí)通過(guò)旨在模仿人類決策能力的神經(jīng)網(wǎng)絡(luò)。ML工具和技術(shù)是關(guān)鍵的兩個(gè)深度學(xué)習(xí)的窄子集,我們需要用他們來(lái)解決需要思考的問(wèn)題。任何深度神經(jīng)網(wǎng)絡(luò)都將包含三種類型的圖層:
輸入層? ? ?隱藏層? ? ? ? 輸出層
我們可以說(shuō)深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域的最新領(lǐng)域。這是實(shí)現(xiàn)機(jī)器學(xué)習(xí)的一種方式。
2.3 機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用
計(jì)算機(jī)視覺(jué): 我們將其用于車牌識(shí)別和面部識(shí)別等不同應(yīng)用。
信息檢索: 我們將ML和DL用于搜索引擎,文本搜索和圖像搜索等應(yīng)用程序。
營(yíng)銷:我們?cè)谧詣?dòng)電子郵件營(yíng)銷和目標(biāo)識(shí)別中使用這種學(xué)習(xí)技術(shù)。
醫(yī)療診斷:它在醫(yī)學(xué)領(lǐng)域也有廣泛的應(yīng)用。癌癥鑒定和異常檢測(cè)等應(yīng)用。
自然語(yǔ)言處理:適用于情感分析,照片標(biāo)簽,在線廣告等應(yīng)用。
2.4 趨勢(shì)
如今,機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)正處于趨勢(shì)中。在公司中,對(duì)它們的需求正在迅速增加。對(duì)于希望在其業(yè)務(wù)中集成機(jī)器學(xué)習(xí)而生存的公司而言,他們的需求尤其大。
深度學(xué)習(xí)被發(fā)現(xiàn),并證明擁有最先進(jìn)的表演技術(shù)。因此,深度學(xué)習(xí)讓我們感到驚訝,并將在不久的將來(lái)繼續(xù)這樣做。
最近,研究人員不斷探索機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。過(guò)去,研究人員僅限于學(xué)術(shù)界。但是,如今,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的研究正在兩個(gè)行業(yè)和學(xué)術(shù)界中占據(jù)一席之地。
三、TensorFlow實(shí)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)
? ? ?遞歸神經(jīng)網(wǎng)絡(luò)是一種面向深度學(xué)習(xí)的算法,遵循順序方法。在神經(jīng)網(wǎng)絡(luò)中,我們總是假設(shè)每個(gè)輸入和輸出都獨(dú)立于所有其他層。這些類型的神經(jīng)網(wǎng)絡(luò)稱為循環(huán),因?yàn)樗鼈円皂樞蚍绞綀?zhí)行數(shù)學(xué)計(jì)算,考慮以下步驟來(lái)訓(xùn)練遞歸神經(jīng)網(wǎng)絡(luò) -
第1步 - 從數(shù)據(jù)集輸入特定示例。
第2步 - 網(wǎng)絡(luò)將舉例并使用隨機(jī)初始化變量計(jì)算一些計(jì)算。
第3步 - 然后計(jì)算預(yù)測(cè)結(jié)果。
第4步 - 生成的實(shí)際結(jié)果與期望值的比較將產(chǎn)生錯(cuò)誤。
第5步 - 為了跟蹤錯(cuò)誤,它通過(guò)相同的路徑傳播,其中也要調(diào)整變量。
第6步 - 重復(fù)從1到5的步驟,直到聲明獲得輸出的變量正確定義。
第7步 - 通過(guò)應(yīng)用這些變量來(lái)獲得新的看不見(jiàn)的輸入來(lái)進(jìn)行系統(tǒng)預(yù)測(cè)。
表示遞歸神經(jīng)網(wǎng)絡(luò)的示意方法如下所述 :
第1步? TensorFlow包括用于循環(huán)神經(jīng)網(wǎng)絡(luò)模塊的特定實(shí)現(xiàn)的各種庫(kù)。?
#Import necessary modules from __future__ import print_functionimport tensorflow as tf from tensorflow.contrib import rnn from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot = True)第2步? 使用遞歸神經(jīng)網(wǎng)絡(luò)對(duì)圖像進(jìn)行分類,將每個(gè)圖像行視為像素序列。MNIST圖像形狀具體定義為28 * 28像素?,F(xiàn)在將為所提到的每個(gè)樣本處理28個(gè)序列和28個(gè)步驟。定義輸入?yún)?shù)以完成順序模式。
n_input = 28 # MNIST data input with img shape 28*28 n_steps = 28 n_hidden = 128 n_classes = 10# tf Graph input x = tf.placeholder("float", [None, n_steps, n_input]) y = tf.placeholder("float", [None, n_classes] weights = {'out': tf.Variable(tf.random_normal([n_hidden, n_classes])) } biases = {'out': tf.Variable(tf.random_normal([n_classes])) }第3步? 使用RNN中定義的函數(shù)計(jì)算結(jié)果以獲得最佳結(jié)果。這里,將每個(gè)數(shù)據(jù)形狀與當(dāng)前輸入形狀進(jìn)行比較,并計(jì)算結(jié)果以保持準(zhǔn)確率。
def RNN(x, weights, biases):x = tf.unstack(x, n_steps, 1)# Define a lstm cell with tensorflowlstm_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)# Get lstm cell outputoutputs, states = rnn.static_rnn(lstm_cell, x, dtype = tf.float32)# Linear activation, using rnn inner loop last outputreturn tf.matmul(outputs[-1], weights['out']) + biases['out']pred = RNN(x, weights, biases)# Define loss and optimizer cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(cost)# Evaluate model correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))# Initializing the variables init = tf.global_variables_initializer()第4步 ?在此步驟中,將啟動(dòng)圖形以獲得計(jì)算結(jié)果。也有助于計(jì)算測(cè)試結(jié)果的準(zhǔn)確性。
with tf.Session() as sess:sess.run(init)step = 1# Keep training until reach max iterationswhile step * batch_size < training_iters:batch_x, batch_y = mnist.train.next_batch(batch_size)batch_x = batch_x.reshape((batch_size, n_steps, n_input))sess.run(optimizer, feed_dict={x: batch_x, y: batch_y})if step % display_step == 0:# Calculate batch accuracyacc = sess.run(accuracy, feed_dict={x: batch_x, y: batch_y})# Calculate batch lossloss = sess.run(cost, feed_dict={x: batch_x, y: batch_y})print("Iter " + str(step*batch_size) + ", Minibatch Loss {:.6f}".format(loss) + ", Training Accuracy= {:.5f}".format(acc))step += 1print("Optimization Finished!")test_len = 128test_data = mnist.test.images[:test_len].reshape((-1, n_steps, n_input))test_label = mnist.test.labels[:test_len]print("Testing Accuracy:", \sess.run(accuracy, feed_dict={x: test_data, y: test_label}))上面的屏幕截圖顯示了生成的輸出 。
毫不夸張得說(shuō),TensorFlow的流行讓深度學(xué)習(xí)門(mén)檻變得越來(lái)越低,只要你有Python和機(jī)器學(xué)習(xí)基礎(chǔ),入門(mén)和使用神經(jīng)網(wǎng)絡(luò)模型變得非常簡(jiǎn)單。TensorFlow支持Python和C++兩種編程語(yǔ)言,再?gòu)?fù)雜的多層神經(jīng)網(wǎng)絡(luò)模型都可以用Python來(lái)實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的Code For Better 谷歌开发者之声 ——Tensorflow与深度学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 对数公式
- 下一篇: 沈阳城市建设学院计算机2019,沈阳城市