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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

如何在TensorFlow中訓(xùn)練嵌入

Tensorflowers ? 來源:lq ? 2018-12-19 14:25 ? 次閱讀

今天的文章介紹了嵌入這一概念,并且舉了一個(gè)簡(jiǎn)單的例子來說明如何在 TensorFlow 中訓(xùn)練嵌入,此外還說明了如何使用 TensorBoard Embedding Projector 查看嵌入(真實(shí)示例http://projector.tensorflow.org/?hl=zh-CN)。前兩部分適合機(jī)器學(xué)習(xí)或 TensorFlow 新手,而 Embedding Projector 指南適合各個(gè)層次的用戶。

有關(guān)這些概念的另一個(gè)教程,請(qǐng)參閱《機(jī)器學(xué)習(xí)速成課程》的 “嵌入” 部分(https://developers.google.cn/machine-learning/crash-course/embeddings/video-lecture?hl=zh-CN)。

嵌入是從離散對(duì)象(例如字詞)到實(shí)數(shù)向量的映射。例如,英語(yǔ)字詞的 300 維嵌入可能包括:

blue: (0.01359, 0.00075997, 0.24608, ..., -0.2524, 1.0048, 0.06259)blues: (0.01396, 0.11887, -0.48963, ..., 0.033483, -0.10007, 0.1158)orange: (-0.24776, -0.12359, 0.20986, ..., 0.079717, 0.23865, -0.014213)oranges: (-0.35609, 0.21854, 0.080944, ..., -0.35413, 0.38511, -0.070976)

這些向量中的各個(gè)維度通常沒有固有含義,機(jī)器學(xué)習(xí)所利用的是向量的位置和相互之間的距離這些整體模式。

嵌入對(duì)于機(jī)器學(xué)習(xí)的輸入非常重要。分類器(更籠統(tǒng)地說是神經(jīng)網(wǎng)絡(luò))適用于實(shí)數(shù)向量。它們訓(xùn)練密集向量時(shí)效果最佳,其中所有值都有助于定義對(duì)象。不過,機(jī)器學(xué)習(xí)的很多重要輸入(例如文本的字詞)沒有自然的向量表示。嵌入函數(shù)是將此類離散輸入對(duì)象轉(zhuǎn)換為有用連續(xù)向量的標(biāo)準(zhǔn)和有效方法。

嵌入作為機(jī)器學(xué)習(xí)的輸出也很有價(jià)值。由于嵌入將對(duì)象映射到向量,因此應(yīng)用可以將向量空間中的相似性(例如歐幾里德距離或向量之間的角度)用作一項(xiàng)強(qiáng)大而靈活的標(biāo)準(zhǔn)來衡量對(duì)象相似性。一個(gè)常見用途是找到最近的鄰點(diǎn)。例如,下面是采用與上述相同的字詞嵌入后,每個(gè)字詞的三個(gè)最近鄰點(diǎn)和相應(yīng)角度:

blue: (red, 47.6°), (yellow, 51.9°), (purple, 52.4°)blues: (jazz, 53.3°), (folk, 59.1°), (bluegrass, 60.6°)orange: (yellow, 53.5°), (colored, 58.0°), (bright, 59.9°)oranges: (apples, 45.3°), (lemons, 48.3°), (mangoes, 50.4°)

這樣應(yīng)用就會(huì)知道,在某種程度上,蘋果和橙子(相距 45.3°)的相似度高于檸檬和橙子(相距 48.3°)。

TensorFlow 中的嵌入

要在 TensorFlow 中創(chuàng)建字詞嵌入,我們首先將文本拆分成字詞,然后為詞匯表中的每個(gè)字詞分配一個(gè)整數(shù)。我們假設(shè)已經(jīng)完成了這一步,并且word_ids是這些整數(shù)的向量。例如,可以將 “I have a cat.” 這個(gè)句子拆分成[“I”, “have”, “a”, “cat”, “.”],那么相應(yīng)word_ids張量的形狀將是[5],并且包含 5 個(gè)整數(shù)。為了將這些字詞 ID 映射到向量,我們需要?jiǎng)?chuàng)建嵌入變量并使用tf.nn.embedding_lookup函數(shù),如下所示:

word_embeddings = tf.get_variable(“word_embeddings”, [vocabulary_size, embedding_size])embedded_word_ids = tf.nn.embedding_lookup(word_embeddings, word_ids)

完成此操作后,示例中張量embedded_word_ids的形狀將是[5, embedding_size],并且包含全部 5 個(gè)字詞的嵌入(密集向量)。在訓(xùn)練結(jié)束時(shí),word_embeddings將包含詞匯表中所有字詞的嵌入。

嵌入可以通過很多網(wǎng)絡(luò)類型進(jìn)行訓(xùn)練,并具有各種損失函數(shù)和數(shù)據(jù)集。例如,對(duì)于大型句子語(yǔ)料庫(kù),可以使用遞歸神經(jīng)網(wǎng)絡(luò)根據(jù)上一個(gè)字詞預(yù)測(cè)下一個(gè)字詞,還可以訓(xùn)練兩個(gè)網(wǎng)絡(luò)來進(jìn)行多語(yǔ)言翻譯。字詞的向量表示教程中介紹了這些方法。

直觀顯示嵌入

TensorBoard 包括Embedding Projector,這是一款可讓您以交互的方式直觀顯示嵌入的工具。此工具可以讀取模型中的嵌入,并以二維或三維方式渲染這些嵌入。

Embedding Projector 具有三個(gè)面板:

數(shù)據(jù)面板:位于左上方,您可以在其中選擇運(yùn)行、嵌入變量和數(shù)據(jù)列,以對(duì)點(diǎn)進(jìn)行著色和標(biāo)記

投影面板:位于左下方,您可以在其中選擇投影類型

檢查工具面板:位于右側(cè),您可以在其中搜索特定點(diǎn)并查看最近鄰點(diǎn)的列表

投影

Embedding Projector 提供三種方法來降低數(shù)據(jù)集的維度。

t-SNE:一種非線性不確定性算法(T 分布式隨機(jī)鄰點(diǎn)嵌入),它會(huì)嘗試保留數(shù)據(jù)中的局部鄰點(diǎn),通常以扭曲全局結(jié)構(gòu)為代價(jià)。您可以選擇是計(jì)算二維還是三維投影。

PCA:一種線性確定性算法(主成分分析),它嘗試用盡可能少的維度捕獲盡可能多的數(shù)據(jù)可變性。PCA 會(huì)突出數(shù)據(jù)中的大規(guī)模結(jié)構(gòu),但可能會(huì)扭曲本地鄰點(diǎn)。Embedding Projector 會(huì)計(jì)算前 10 個(gè)主成分,您可以從中選擇兩三個(gè)進(jìn)行查看。

自定義:線性投影到您使用數(shù)據(jù)中的標(biāo)簽指定的水平軸和垂直軸上。例如,您可以通過為 “左” 和 “右” 指定文本格式來定義水平軸。Embedding Projector 會(huì)查找標(biāo)簽與 “左” 格式相匹配的所有點(diǎn),并計(jì)算這些點(diǎn)的形心;“右” 格式與此類似。穿過這兩個(gè)形心的線定義了水平軸。同樣地,計(jì)算與 “上” 和 “下” 文本格式相匹配的點(diǎn)的形心可定義垂直軸。

要查看其他實(shí)用文章,請(qǐng)參閱如何有效使用 t-SNE和直觀介紹主成分分析。

探索

您可以使用自然的點(diǎn)擊并拖動(dòng)手勢(shì)來縮放、旋轉(zhuǎn)和平移,從而進(jìn)行直觀探索。將鼠標(biāo)懸停在某個(gè)點(diǎn)上即可看到該點(diǎn)的所有元數(shù)據(jù)。您還可以檢查最近的鄰點(diǎn)子集。點(diǎn)擊某個(gè)點(diǎn)以后,右窗格中會(huì)列出最近的領(lǐng)點(diǎn),以及到當(dāng)前點(diǎn)的距離。投影中還會(huì)突出顯示最近的鄰點(diǎn)。

有時(shí),將視圖限制為點(diǎn)的子集并僅投影這些點(diǎn)非常有用。要執(zhí)行此操作,您可以通過多種方式選擇點(diǎn):

點(diǎn)擊某個(gè)點(diǎn)之后,其最近的鄰點(diǎn)也會(huì)處于選中狀態(tài)

搜索之后,與查詢匹配的點(diǎn)會(huì)處于選中狀態(tài)

啟用選擇,點(diǎn)擊某個(gè)點(diǎn)并拖動(dòng)可定義選擇范圍

然后,點(diǎn)擊右側(cè)檢查工具窗格頂部的 “隔離 nnn 個(gè)點(diǎn)” 按鈕。下圖顯示已選擇 101 個(gè)點(diǎn),因此用戶可以點(diǎn)擊 “隔離 101 個(gè)點(diǎn)”:

在字詞嵌入數(shù)據(jù)集中選擇 “重要” 一詞的最近鄰點(diǎn)

高級(jí)技巧:使用自定義投影進(jìn)行過濾可能會(huì)非常有用。我們?cè)谙聢D中濾出了 “政治” 一詞的 100 個(gè)最近鄰點(diǎn),并將它們投影到 “最差” - “最優(yōu)” 向量上作為 x 軸。y 軸是隨機(jī)的。這樣一來,我們可以發(fā)現(xiàn) “想法”、“科學(xué)”、“視角”、“新聞” 這些字詞位于右側(cè),而 “危機(jī)”、“暴力” 和 “沖突” 這些字詞位于左側(cè)。

自定義投影控件。 “政治” 的鄰點(diǎn)到 “最優(yōu)” - “最差” 向量的自定義投影

要分享您的發(fā)現(xiàn),可以使用右下角的書簽面板并將當(dāng)前狀態(tài)(包括任何投影的計(jì)算坐標(biāo))保存為小文件。接著可以將 Projector 指向一個(gè)包含一個(gè)或多個(gè)這些文件的集合,從而生成下面的面板。然后,其他用戶就可以查看一系列書簽。

元數(shù)據(jù)

如果您使用嵌入,則可能需要向數(shù)據(jù)點(diǎn)附加標(biāo)簽/圖片。您可以通過生成一個(gè)元數(shù)據(jù)文件(其中包含每個(gè)點(diǎn)的標(biāo)簽),并在 Embedding Projector 的數(shù)據(jù)面板中點(diǎn)擊 “加載數(shù)據(jù)” 來完成此操作。

元數(shù)據(jù)可以是標(biāo)簽,也可以是圖片,它們存儲(chǔ)在單獨(dú)的文件中。如果是標(biāo)簽,則格式應(yīng)該是TSV 文件(制表符顯示為紅色),其中第一行包含列標(biāo)題(以粗體顯示),而后續(xù)行包含元數(shù)據(jù)值。例如:

Word FrequencyAirplane 345Car 241...

假設(shè)元數(shù)據(jù)文件中的行順序與嵌入變量中的向量順序相匹配,但標(biāo)題除外。那么,元數(shù)據(jù)文件中的第 (i+1) 行對(duì)應(yīng)于嵌入變量的第 i 行。如果 TSV 元數(shù)據(jù)文件僅有一列,那么不會(huì)有標(biāo)題行,并且假設(shè)每行都是嵌入的標(biāo)簽。我們之所以包含此例外情況,是因?yàn)樗c常用的“詞匯表文件”格式相匹配。

要將圖片用作元數(shù)據(jù),您必須生成一個(gè)sprite 圖片,其中包含小縮略圖,嵌入中的每個(gè)向量都有一個(gè)小縮略圖。sprite 應(yīng)該按照行在前的順序存儲(chǔ)縮略圖:將第一個(gè)數(shù)據(jù)點(diǎn)放置在左上方,最后一個(gè)數(shù)據(jù)點(diǎn)放在右下方,但是最后一行不必填充,如下所示。

點(diǎn)擊 此鏈接 可查看 Embedding Projector 中的一個(gè)有趣縮略圖示例(https://tensorflow.google.cn/images/embedding-mnist.mp4?hl=zh-CN)。

迷你版常見問題解答

“嵌入” 是一種操作還是一種事物?都是。人們一直說的是在向量空間中嵌入字詞(操作),以及生成字詞嵌入(事物)。兩者的共同點(diǎn)在于嵌入這一概念,即從離散對(duì)象到向量的映射。創(chuàng)建或應(yīng)用該映射是一種操作,但映射本身是一種事物。

嵌入是高維度還是低維度?視情況而定。例如,與可包含數(shù)百萬個(gè)字詞和短語(yǔ)的向量空間相比,一個(gè) 300 維的字詞和短語(yǔ)向量空間通常被視為低維度(且密集)空間。但從數(shù)學(xué)角度上來講,它是高維度空間,顯示的很多屬性與人類直覺了解的二維和三維空間大相徑庭。

嵌入與嵌入層是否相同?不同。嵌入層是神經(jīng)網(wǎng)絡(luò)的一部分,而嵌入則是一個(gè)更寬泛的概念。

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

原文標(biāo)題:如何在 TensorFlow 中訓(xùn)練嵌入

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在Raspberry Pi上安裝TensorFlow

     在本教程,我們將學(xué)習(xí)如何在 Raspberry Pi 上安裝 TensorFlow,并將展示一些在預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)上進(jìn)行簡(jiǎn)單圖像分類的示例。
    發(fā)表于 09-01 16:35 ?2085次閱讀
    如<b class='flag-5'>何在</b>Raspberry Pi上安裝<b class='flag-5'>TensorFlow</b>

    【大聯(lián)大世平Intel?神經(jīng)計(jì)算棒NCS2試用體驗(yàn)】訓(xùn)練模型軟件 tensorflow 的艱難安裝

    OpenVINO安裝完成后,需要提供項(xiàng)目的模型文件,才能進(jìn)行參數(shù)調(diào)優(yōu)和深度學(xué)習(xí)推理。所以需要進(jìn)行數(shù)據(jù)收集,數(shù)據(jù)標(biāo)注,進(jìn)行模型訓(xùn)練。訓(xùn)練的模型很多,有Tensorflow、Caffee等,我選用
    發(fā)表于 07-15 23:29

    情地使用Tensorflow吧!

    在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。它靈活的架構(gòu)讓你可以在多種平臺(tái)上展開計(jì)算,例如臺(tái)式計(jì)算機(jī)的一個(gè)或多個(gè)CPU(或GPU),服務(wù)器,移動(dòng)設(shè)備等等。TensorFlow 最初由
    發(fā)表于 07-22 10:13

    TensorFlow是什么

    更長(zhǎng)。TensorFlow 使這一切變得更加簡(jiǎn)單快捷,從而縮短了想法到部署之間的實(shí)現(xiàn)時(shí)間。在本教程,你將學(xué)習(xí)如何利用 TensorFlow 的功能來實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)。TensorFlow
    發(fā)表于 07-22 10:14

    淺談深度學(xué)習(xí)之TensorFlow

    TensorFlow 實(shí)現(xiàn)所有這些。數(shù)據(jù)集DNN 依賴于大量的數(shù)據(jù)??梢允占蛏蓴?shù)據(jù),也可以使用可用的標(biāo)準(zhǔn)數(shù)據(jù)集。TensorFlow 支持三種主要的讀取數(shù)據(jù)的方法,可以在不同的數(shù)據(jù)集中使用;本教程中用來
    發(fā)表于 07-28 14:34

    TensorFlow優(yōu)化器種類及其用法詳解

    的 tf.train.exponential_decay 方法來實(shí)現(xiàn)這一點(diǎn)。根據(jù) TensorFlow 文檔,在訓(xùn)練模型時(shí),通常建議在訓(xùn)練過程中降低學(xué)習(xí)率。該函數(shù)利用指數(shù)衰減函數(shù)初
    發(fā)表于 07-28 14:39

    何在WINDOWS系統(tǒng)下使用tensorflow來下圍棋呢

    1、如何在WINDOWS系統(tǒng)下安裝tensorflow并使用tensorflow來下圍棋呢 tensorflow0.12版本支持windows,需要python3.5.x。(1)下載并
    發(fā)表于 06-02 16:17

    如何使用TensorFlow將神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上

    有很多方法可以將經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型部署到移動(dòng)或嵌入式設(shè)備上。不同的框架在各種平臺(tái)上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如Android
    發(fā)表于 08-02 06:43

    嵌入式DHCP Server如何在vxWorks

    嵌入式DHCP Server如何在vxWorks的軟件實(shí)現(xiàn)
    發(fā)表于 03-29 12:27 ?23次下載

    TensorFlow Lite是TensorFlow針對(duì)移動(dòng)和嵌入式設(shè)備的輕量級(jí)解決方案

    TensorFlow Lite 目前處于開發(fā)人員預(yù)覽階段,因此可能不支持 TensorFlow 模型的所有操作。但是它支持常見的圖像分類模型,包括 Inception 和 MobileNets。在
    的頭像 發(fā)表于 07-31 15:37 ?2.6w次閱讀
    <b class='flag-5'>TensorFlow</b> Lite是<b class='flag-5'>TensorFlow</b>針對(duì)移動(dòng)和<b class='flag-5'>嵌入</b>式設(shè)備的輕量級(jí)解決方案

    基于tensorflow.js設(shè)計(jì)、訓(xùn)練面向web的神經(jīng)網(wǎng)絡(luò)模型的經(jīng)驗(yàn)

    NVIDIA顯卡。tensorflow.js在底層使用了WebGL加速,所以在瀏覽器訓(xùn)練模型的一個(gè)好處是可以利用AMD顯卡。另外,在瀏覽器訓(xùn)練
    的頭像 發(fā)表于 10-18 09:43 ?4002次閱讀

    何在TensorFlow2高效培訓(xùn)1130億參數(shù)推薦系統(tǒng)

    在這篇文章,我介紹了使用混合并行來訓(xùn)練大型推薦系統(tǒng)的想法。測(cè)試結(jié)果表明, DGX A100 是在 TensorFlow 2 訓(xùn)練參數(shù)超過
    的頭像 發(fā)表于 04-19 15:12 ?844次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>TensorFlow</b>2<b class='flag-5'>中</b>高效培訓(xùn)1130億參數(shù)推薦系統(tǒng)

    何在TensorFlow構(gòu)建并訓(xùn)練CNN模型

    TensorFlow構(gòu)建并訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型是一個(gè)涉及多個(gè)步驟的過程,包括數(shù)據(jù)預(yù)處理、模型設(shè)計(jì)、編譯、訓(xùn)練以及評(píng)估。下面,我將詳細(xì)闡述這些步驟,并附上一個(gè)完整的代碼
    的頭像 發(fā)表于 07-04 11:47 ?387次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡(jiǎn)單的模型訓(xùn)練TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)庫(kù),廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識(shí)別、自然語(yǔ)言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?295次閱讀

    何在Tensorflow實(shí)現(xiàn)反卷積

    ,扮演著重要角色。以下將詳細(xì)闡述如何在TensorFlow實(shí)現(xiàn)反卷積,包括其理論基礎(chǔ)、TensorFlow的實(shí)現(xiàn)方式、以及實(shí)際應(yīng)用
    的頭像 發(fā)表于 07-14 10:46 ?423次閱讀