91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【連載】深度學習筆記7:Tensorflow入門

人工智能實訓營 ? 2018-08-20 12:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

從前面的學習筆記中,和大家一起使用了 numpy 一步一步從感知機開始到兩層網(wǎng)絡以及最后實現(xiàn)了深度神經(jīng)網(wǎng)絡算法搭建。而后我們又討論了改善深度神經(jīng)網(wǎng)絡的基本方法,包括神經(jīng)網(wǎng)絡的正則化、參數(shù)優(yōu)化和調(diào)參等問題。這一切工作我們都是基于numpy 完成的,沒有調(diào)用任何深度學習框架。在學習深度學習的時候,一開始不讓大家直接上手框架可謂良苦用心,旨在讓大家能夠跟筆者一樣,一步一步通過 numpy 搭建神經(jīng)網(wǎng)絡的過程就是要讓你能夠更加深入的理解神經(jīng)網(wǎng)絡的架構、基本原理和工作機制,而不是黑箱以視之。

但學習到這個階段,你已充分理解了神經(jīng)網(wǎng)絡的工作機制,馬上就要接觸更深層次的卷積神經(jīng)網(wǎng)絡(CNN)和遞歸神經(jīng)網(wǎng)絡(RNN),依靠純手工去搭建這些復雜的神經(jīng)網(wǎng)絡恐怕并不現(xiàn)實。這時候就該深度學習框架出場了。針對深度學習,目前有很多優(yōu)秀的學習框架,比如說馬上要講的 Tensorflow,微軟的 CNTK,伯克利視覺中心開發(fā)的 caffe,以及別具一格的 PyTorch 和友好易用的 keras,本系列深度學習筆記打算從 Tensorflow 開始,對三大主流易用的深度學習框架 Tensorflow、PyTorch 和 keras 進行學習和講解。選擇這三個框架的原因在于其簡單易用、方便編程和運行速度相對較快。

作為谷歌的深度學習框架, Tensorflow 在深度學習領域可謂風頭無二。其中 Tensor 可以理解為類似于 numpy 的 N 維數(shù)組,名為張量; flow 則意味著 N 維數(shù)組的流計算,而 Tensor 的數(shù)據(jù)流計算形式則為一個計算圖的形式進行計算。這里重點提一下,如果大學本科期間的線性代數(shù)忘記了的話,我勸你趕緊回去翻一翻,線性代數(shù)和矩陣論是深度學習的基礎,希望你能熟練掌握。

先看個簡單的例子。

importtensorflowastf#Definey_hatconstant.Setto36.y_hat=tf.constant(36,name='y_hat')#Definey.Setto39y=tf.constant(39,name='y')#Createavariableforthelossloss=tf.Variable((y-y_hat)**2,name='loss')#Wheninitisrunlater(session.run(init)),thelossvariablewillbeinitializedandreadytobecomputedinit=tf.global_variables_initializer()#Createasessionandprinttheoutputwithtf.Session()assession: #Initializesthevariables session.run(init) #Printstheloss print(session.run(loss))

9

在上述代碼中,我們首先定義了兩個常量,然后定義了一個 loss Tensor(變量),之后對變量進行初始化,創(chuàng)建計算會話,最后執(zhí)行會話計算并打印結果。所以我們可以看到運行 Tensorflow的基本機制:
創(chuàng)建一些尚未被執(zhí)行的張量——定義這些張量之間的運算操作——初始化這些張量——創(chuàng)建會話——執(zhí)行會話

需要注意的一點是,創(chuàng)建會話后一定要執(zhí)行這個會話,且看下面示例:

a=tf.constant(2) b=tf.constant(10) c=tf.multiply(a,b) print(c) Tensor("Mul:0",shape=(),dtype=int32)

在上面的示例中,我們創(chuàng)建了兩個 Tensor和 Tensor之間的乘積運算,但直接打印的結果卻不是我們想要看到的 20. 原因則在于這里我們沒有創(chuàng)建會話并執(zhí)行,只是打印了兩個張量運算之后的張量。創(chuàng)建會話并執(zhí)行操作如下:

sess=tf.Session() print(sess.run(c))

20

除了直接定義變量之外,我們還可以通過創(chuàng)建占位符變量來稍后為之賦值,然后在運行會話中傳入一個 feed_dict,示例如下:

x=tf.placeholder(tf.int64,name='x') print(sess.run(2*x,feed_dict={x:3})) sess.close()

6

相信你已經(jīng)大致明白了基于張量運算的 Tensorflow的底層運行機制了。總結而言就是:創(chuàng)建張量、初始化張量、創(chuàng)建會話并執(zhí)行。

下面展示幾個 Tensorflow的神經(jīng)網(wǎng)絡計算的基礎函數(shù)示例。


線性函數(shù)

def linear_function(): """ Implements a linear function: Initializes W to be a random tensor of shape (4,3) Initializes X to be a random tensor of shape (3,1) Initializes b to be a random tensor of shape (4,1) Returns: result -- runs the session for Y = WX + b """ np.random.seed(1) X = tf.constant(np.random.randn(3,1), name='X') W = tf.constant(np.random.randn(4,3), name='W') b = tf.constant(np.random.randn(4,1), name='b') Y = tf.add(tf.matmul(W, X), b) # Create the session using tf.Session() and run it with sess.run(...) on the variable you want to calculate init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) result = sess.run(Y) # close the session sess.close() return result

計算sigmoid函數(shù)

def sigmoid(z): """ Computes the sigmoid of z Arguments: z -- input value, scalar or vector Returns: results -- the sigmoid of z """ x = tf.placeholder(tf.float32, name='x') sigmoid = tf.sigmoid(x) with tf.Session() as sess: result = sess.run(sigmoid, feed_dict={x: z}) return result

計算損失函數(shù)

def cost(logits, labels): """ Computes the cost using the sigmoid cross entropy Arguments: logits -- vector containing z, output of the last linear unit (before the final sigmoid activation) labels -- vector of labels y (1 or 0) Note: What we've been calling "z" and "y" in this class are respectively called "logits" and "labels" in the TensorFlow documentation. So logits will feed into z, and labels into y. Returns: cost -- runs the session of the cost (formula (2)) """ # Create the placeholders for "logits" (z) and "labels" (y) (approx. 2 lines) z = tf.placeholder(tf.float32, name='z') y = tf.placeholder(tf.float32, name='y') # Use the loss function (approx. 1 line) cost = tf.nn.sigmoid_cross_entropy_with_logits(logits=z, labels=y) # Create a session (approx. 1 line). See method 1 above. sess = tf.Session() # Run the session (approx. 1 line). sess.run(cost, feed_dict={z: logits, y: labels}) # Close the session (approx. 1 line). See method 1 above. sess.close() return cost

one hot 編碼

def one_hot_matrix(labels, C): """ Creates a matrix where the i-th row corresponds to the ith class number and the jth column corresponds to the jth training example. So if example j had a label i. Then entry (i,j) will be 1. Arguments: labels -- vector containing the labels C -- number of classes, the depth of the one hot dimension Returns: one_hot -- one hot matrix """ # Create a tf.constant equal to C (depth), name it 'C'. (approx. 1 line) C = tf.constant(C) # Use tf.one_hot, be careful with the axis (approx. 1 line) one_hot_matrix = tf.one_hot(labels, C, axis=0) # Create the session (approx. 1 line) sess = tf.Session() one_hot = sess.run(one_hot_matrix) # Close the session (approx. 1 line). See method 1 above. sess.close() return one_hot

參數(shù)初始化

def ones(shape): """ Creates an array of ones of dimension shape Arguments: shape -- shape of the array you want to create Returns: ones -- array containing only ones """ # Create "ones" tensor using tf.ones(...). (approx. 1 line) ones = tf.ones(shape) # Create the session (approx. 1 line) sess = tf.Session() # Run the session to compute 'ones' (approx. 1 line) ones = sess.run(ones) # Close the session (approx. 1 line). See method 1 above. sess.close() return ones

一頓操作之后,我們已經(jīng)將神經(jīng)網(wǎng)絡的一些基礎運算利用 Tensorflow 定義好了。在下一期筆記中,我們將學習如何使用 Tensorflow 搭建神經(jīng)網(wǎng)絡。

本文來自《自興動腦人工智能》項目部:凱文

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1806

    文章

    49008

    瀏覽量

    249305
  • 機器學習
    +關注

    關注

    66

    文章

    8501

    瀏覽量

    134578
  • 深度學習
    +關注

    關注

    73

    文章

    5561

    瀏覽量

    122785
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    用樹莓派搞深度學習TensorFlow啟動!

    介紹本頁面將指導您在搭載64位Bullseye操作系統(tǒng)的RaspberryPi4上安裝TensorFlowTensorFlow是一個專為深度學習開發(fā)的大型軟件庫,它消耗大量資源。您可
    的頭像 發(fā)表于 03-25 09:33 ?437次閱讀
    用樹莓派搞<b class='flag-5'>深度</b><b class='flag-5'>學習</b>?<b class='flag-5'>TensorFlow</b>啟動!

    IPC2221簡略學習筆記

    關于IPC2221的學習筆記
    發(fā)表于 03-14 18:07 ?5次下載

    軍事應用中深度學習的挑戰(zhàn)與機遇

    人工智能尤其是深度學習技術的最新進展,加速了不同應用領域的創(chuàng)新與發(fā)展。深度學習技術的發(fā)展深刻影響了軍事發(fā)展趨勢,導致戰(zhàn)爭形式和模式發(fā)生重大變化。本文將概述
    的頭像 發(fā)表于 02-14 11:15 ?530次閱讀

    模電手賬筆記7

    模電手賬筆記7
    的頭像 發(fā)表于 02-13 16:31 ?358次閱讀
    模電手賬<b class='flag-5'>筆記</b>(<b class='flag-5'>7</b>)

    BP神經(jīng)網(wǎng)絡與深度學習的關系

    BP神經(jīng)網(wǎng)絡與深度學習之間存在著密切的關系,以下是對它們之間關系的介紹: 一、BP神經(jīng)網(wǎng)絡的基本概念 BP神經(jīng)網(wǎng)絡,即反向傳播神經(jīng)網(wǎng)絡(Backpropagation Neural Network
    的頭像 發(fā)表于 02-12 15:15 ?850次閱讀

    入門web安全筆記分享

    在計算機技術如日中天的今天,Web安全問題也接踵而來。但Web安全卻“入門簡單精通難”,涉及技術非常多且廣,學習阻力很大。 為此今天分享一份94頁的《Web Hacking 101》筆記,包含Web
    的頭像 發(fā)表于 12-03 17:04 ?638次閱讀
    <b class='flag-5'>入門</b>web安全<b class='flag-5'>筆記</b>分享

    NPU在深度學習中的應用

    隨著人工智能技術的飛速發(fā)展,深度學習作為其核心驅動力之一,已經(jīng)在眾多領域展現(xiàn)出了巨大的潛力和價值。NPU(Neural Processing Unit,神經(jīng)網(wǎng)絡處理單元)是專門為深度學習
    的頭像 發(fā)表于 11-14 15:17 ?1902次閱讀

    Pytorch深度學習訓練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學習訓練。
    的頭像 發(fā)表于 10-28 14:05 ?651次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學習</b>訓練的方法

    GPU深度學習應用案例

    GPU在深度學習中的應用廣泛且重要,以下是一些GPU深度學習應用案例: 一、圖像識別 圖像識別是深度學習
    的頭像 發(fā)表于 10-27 11:13 ?1342次閱讀

    FPGA加速深度學習模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學習模型是當前硬件加速領域的一個熱門研究方向。以下是一些FPGA加速深度學習模型的案例: 一、基于FPGA的AlexNet卷積運算加速 項目名稱
    的頭像 發(fā)表于 10-25 09:22 ?1220次閱讀

    AI大模型與深度學習的關系

    AI大模型與深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大模型的基礎 技術支撐 :深度
    的頭像 發(fā)表于 10-23 15:25 ?2877次閱讀

    FPGA做深度學習能走多遠?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:FPGA做深度學習能走多遠?現(xiàn)在用FPGA做深度學習加速成為一個熱門,深鑒科技,商湯,曠視科技等都有基于FPG
    發(fā)表于 09-27 20:53

    快速部署Tensorflow和TFLITE模型在Jacinto7 Soc

    電子發(fā)燒友網(wǎng)站提供《快速部署Tensorflow和TFLITE模型在Jacinto7 Soc.pdf》資料免費下載
    發(fā)表于 09-27 11:41 ?0次下載
    快速部署<b class='flag-5'>Tensorflow</b>和TFLITE模型在Jacinto<b class='flag-5'>7</b> Soc

    AI入門深度學習:基本概念篇

    1、什么是深度學習 1.1、機器學習 ?? ? 圖1:計算機有效工作的常用方法:程序員編寫規(guī)則(程序),計算機遵循這些規(guī)則將輸入數(shù)據(jù)轉換為適當?shù)拇鸢浮_@一方法被稱為符號主義人工智能,適合用來解決定
    的頭像 發(fā)表于 08-08 11:24 ?2422次閱讀
    AI<b class='flag-5'>入門</b>之<b class='flag-5'>深度</b><b class='flag-5'>學習</b>:基本概念篇

    PyTorch深度學習開發(fā)環(huán)境搭建指南

    PyTorch作為一種流行的深度學習框架,其開發(fā)環(huán)境的搭建對于深度學習研究者和開發(fā)者來說至關重要。在Windows操作系統(tǒng)上搭建PyTorch環(huán)境,需要綜合考慮多個方面,包括軟件安裝、
    的頭像 發(fā)表于 07-16 18:29 ?2517次閱讀
    主站蜘蛛池模板: 性在线视频 | 亚洲成色www久久网站 | 日韩毛片免费视频一级特黄 | 久久婷婷一区二区三区 | 毛片免费高清免费 | bt在线天堂 | 又黄又爽的成人免费网站 | 免费又爽又黄的禁片1000部 | 欧美黑人黄色片 | 国产精品伦理久久久久 | 天天天干| 欧美一区二区三区不卡免费观看 | 亚洲高清视频一区 | 色多多视频在线观看免费大全 | 狠狠色丁香婷婷综合欧美 | 国产主播一区二区 | 欧美一区二区三区不卡免费观看 | 欧美一级黄色影片 | 国产亚洲欧美日韩俺去了 | 欧美色欧美亚洲高清在线视频 | 国产小视频在线 | 欧美成年网站 | 爱爱欧美 | 亚洲色图图片区 | 久久精品免费看 | 日产精品卡二卡三卡四卡乱码视频 | 黄视频免费在线观看 | 免费人成在线观看网站 | 韩日色图 | 久久国产精品岛国搬运工 | 美女福利在线观看 | 一级毛毛片毛片毛片毛片在线看 | 国产精欧美一区二区三区 | 恐怖片大全恐怖片免费观看好看的恐怖片 | 亚洲你我色 | 玖玖激情| 94久久国产乱子伦精品免费 | 日韩日韩 | 天天干天天拍天天射天天添天天爱 | 奇米视频7777 | 午夜久久福利 |