1. 程式人生 > >TensorFlow學習筆記(1):LSTM相關程式碼

TensorFlow學習筆記(1):LSTM相關程式碼

LSTM是seq2seq模型中經典的子結構,TensorFlow中提供了相應的結構,供我們使用:

tensorflow提供了LSTM實現的一個basic版本,不包含lstm的一些高階擴充套件,同時也提供了一個標準介面,其中包含了lstm的擴充套件。分別為:tf.nn.rnn_cell.BasicLSTMCell(), tf.nn.rnn_cell.LSTMCell()

tensorflow中的BasicLSTMCell()是完全按照這個結構進行設計的

#tf.nn.rnn_cell.BasicLSTMCell(num_units, forget_bias, input_size, state_is_tupe=Flase, activation=tanh)
cell = tf.nn.rnn_cell.BasicLSTMCell(num_units, forget_bias=1.0, input_size=None, state_is_tupe=Flase, activation=tanh)
#num_units:圖一中ht的維數,如果num_units=10,那麼ht就是10維行向量
#forget_bias:還不清楚這個是幹嘛的
#input_size:[batch_size, max_time, size]。假設要輸入一句話,這句話的長度是不固定的,max_time就代表最長的那句話是多長,size表示你打算用多長的向量代表一個word,即embedding_size(embedding_size和size的值不一定要一樣)
#state_is_tuple:true的話,返回的狀態是一個tuple:(c=array([[]]), h=array([[]]):其中c代表Ct的最後時間的輸出,h代表Ht最後時間的輸出,h是等於最後一個時間的output的
#圖三向上指的ht稱為output
#此函式返回一個lstm_cell,即圖一中的一個A

如果你想要設計一個多層的LSTM網路,你就會用到tf.nn.rnn_cell.MultiRNNCell(cells, state_is_tuple=False),這裡多層的意思上向上堆疊,而不是按時間展開

lstm_cell = tf.nn.rnn_cell.MultiRNNCells(cells, state_is_tuple=False)
#cells:一個cell列表,將列表中的cell一個個堆疊起來,如果使用cells=[cell]*4的話,就是四曾,每層cell輸入輸出結構相同
#如果state_is_tuple:則返回的是 n-tuple,其中n=len(cells): tuple:(c=[batch_size, num_units], h=[batch_size,num_units])

這是,網路已經搭好了,tensorflow提供了一個非常方便的方法來生成初始化網路的state

initial_state = lstm_cell.zero_state(batch_size, dtype=)
#返回[batch_size, 2*len(cells)],或者[batch_size, s]
#這個函式只是用來生成初始化值的

現在進行時間展開,有兩種方法:
法一:
使用現成的介面
tf.nn.dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None,dtype=None,time_major=False)
#此函式會通過,inputs中的max_time將網路按時間展開
#cell:將上面的lstm_cell傳入就可以
#inputs:[batch_size, max_time, size]如果time_major=Flase. [max_time, batch_size, size]如果time_major=True
#sequence_length:是一個list,如果你要輸入三句話,且三句話的長度分別是5,10,25,那麼sequence_length=[5,10,25]
#返回:(outputs, states):output,[batch_size, max_time, num_units]如果time_major=False。 [max_time,batch_size,num_units]如果time_major=True。states:[batch_size, 2*len(cells)]或[batch_size,s]
#outputs輸出的是最上面一層的輸出,states儲存的是最後一個時間輸出的states


第二種方法:
outputs = []
states = initial_states
with tf.variable_scope("RNN"):
    for time_step in range(max_time):
        if time_step>0:tf.get_variable_scope().reuse_variables()#LSTM同一曾參數共享,
        (cell_out, state) = lstm_cell(inputs[:,time_step,:], state)
        outputs.append(cell_out)

tenforflow提供了tf.nn.rnn_cell.GRUCell()構建一個GRU單元

cell = tenforflow提供了tf.nn.rnn_cell.GRUCell(num_units, input_size=None, activation=tanh)
#參考lstm cell 使用


相關推薦

TensorFlow學習筆記1LSTM相關程式碼

LSTM是seq2seq模型中經典的子結構,TensorFlow中提供了相應的結構,供我們使用: tensorflow提供了LSTM實現的一個basic版本,不包含lstm的一些高階擴充套件,同時也提供了一個標準介面,其中包含了lstm的擴充套件。分別為:tf.nn.rnn

tensorflow學習筆記1sess.run()

原址:https://www.2cto.com/kf/201610/559887.html session.run() session.run([fetch1, fetch2]) import tensorflow as tf state = tf.Variable(0.0,dtype=

Win10tensorflow 學習筆記1

目錄: 前言 尾聲: 前言 經過前段時間的努力,已經在電腦上搭好了深度學習系統,接下來就要開始跑程式了,將AI落地了。 安裝win10下tensforlow 可以參照之前的例子:win10+gpu安裝 在使用gpu版本中一些特別的問題

SpringBoot學習筆記1配置Mybatis

target oca run class .com gpo connect auto users SpringBoot學習筆記(1):配置Mybatis 參考資料:   1.AndyLizh的博客   2.xiaolyuh123的博客 快速開始 添加Mybatis依賴(

Redis學習筆記1Redis的說明與安裝

sets cti ansi c sde pos AR bsd 學習 ash Redis學習筆記(1):Redis說明的安裝 說明 什麽是Redis REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-v

Node.js學習筆記1Node.js快速開始

path 文本文 下載 啟動程序 直接 查看 學習筆記 完成後 編輯器 Node.js學習筆記(1):Node.js快速開始 Node.js的安裝 下載 官方網址:https://nodejs.org/en/ 說明:   在Windows上安裝時務必選擇全部組件,包括勾選

開源容器openshift學習筆記1新增Router元件

開篇之前如果沒有安裝openshift環境可以參考我的博文:centos7下安裝openshift 本系列部落格學習筆記參考《開源容器雲openshift》一書:下載連線:https://download.csdn.net/download/u012371097/10745382  

TensorFlow學習筆記1—— MNIST手寫識別

1、初步學習 資料處理 xs:60000張圖片,28*28大小,將所有畫素點按一列排列,資料集變為了[60000, 784]的二維矩陣。 ys:60000張圖片,每個圖片有一個標籤標識圖片中數字,採用one-hot向量,資料集變為[60000, 10]的二維矩陣。 softm

linux學習筆記1linux基礎知識

1.linux是什麼? Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。 2. 什麼是shell 保護系統核心並對外提供操作介面的軟體 在linux中預設的

Shader學習筆記1Shader基礎

最近想學Shader,找到一個大佬的部落格,該筆記只是自己學習Shader的知識記錄,其實跟部落格的內容差不多,但是寫一遍,自己對shader的基礎更加清楚,這將是一個系列筆記,大佬部落格的地址: 1.unity提供的5種Shader模板 (1)Standard

tensorflow學習筆記1

tensorflow 學習筆記(1) 學習內容: 推薦一個網址:https://www.w3cschool.cn/tensorflow_python/tensorflow_python-hckq2htb.html 這裡有各種tensorflow函式的應用 tf.con

tensorflow學習筆記3優化器optimizer

Ⅰ.class tf.train.Optimizer 優化器(optimizers)類的基類。這個類定義了在訓練模型的時候新增一個操作的API。你基本上不會直接使用這個類,但是你會用到他的子類比如GradientDescentOptimizer, AdagradOptimi

Stuts2學習筆記1環境搭建及Demo

原始碼: github: https://github.com/liaotuo/Struts2-Demo/tree/master/struts2-demo 環境搭建 下載struts2 官網下載:http://mirror.bit.edu.cn/apache/struts

H264學習筆記1視訊壓縮編碼的基本原理

        陸陸續續學習H264有一段時間了,曾經以為自己可以在這方面大有作為,但是越是學習越發現,根本不存在能夠大幅度提升H264效能的方案,對於我這種水平的人來講。初次學習,概念的理解仍然很困難。在這裡我只是簡單淺顯的講一講我最近的讀書學習感想。        首先

TensorFlow學習筆記CIFAR-10訓練例子報錯解決

以下報錯主要是由於TensorFlow升級1.0後與以前程式碼不相容所致。 1.AttributeError: 'module' object has noattribute 'random_crop' 解決方案: 將distorted_image= tf.ima

TensorFlow學習筆記 CIFAR-10

1. CIFAR-10 Cifar-10 是由 Hinton 的兩個大弟子 Alex Krizhevsky、Ilya Sutskever 收集的一個用於普適物體識別的資料集。Cifar 是加拿大政府牽頭投資的一個先進科學專案研究所。Hinton、Bengio

Python學習筆記1圖片處理

基礎學習 在配置完開發環境之後,就可以開始Python的學習之路啦!首先是基礎知識的學習,可以根據自己的情況找到合適的教程,我用了一週的時間把慕課網上的Python教程 過了一遍。 過完一遍之後,發現印象不夠深刻,所以找一些小的練習來鞏固基礎。我選擇了Pyt

tensorflow學習筆記dropout

我們都知道dropout對於防止過擬合效果不錯 dropout一般用在全連線的部分,卷積部分一般不會用到dropout,輸出曾也不會使用dropout,適用範圍[輸入,輸出) tf.nn.drop

Caffe學習筆記1簡單的資料視覺化

caffe的底層是c++寫的,如果要進行資料視覺化,需要藉助其它的庫或者是介面,如opencv,python或者是matlab,python的環境需要自行配置,因為我使用的都是網管同志已經配置好的深度學習伺服器,所以不用管底層的一些配置問題,如果需要自行配置自己

WPF學習筆記1DataGrid單元格實現逐鍵過濾功能

    最近,開始學習WPF,其UI設計完全顛覆了傳統的設計理念,為程式設計師提供了極大的自由發揮空間,讓我為之驚歎,且為之著迷。然而,WPF在國內的熱度卻並不高,大部分貼子都是2012年以前的,出版的圖書也很少,參考的資料不多。為了避免在以後的程式設計中少走彎路,也防止自己遺忘,在此記錄