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學習筆記(1):LSTM相關程式碼
LSTM是seq2seq模型中經典的子結構,TensorFlow中提供了相應的結構,供我們使用: tensorflow提供了LSTM實現的一個basic版本,不包含lstm的一些高階擴充套件,同時也提供了一個標準介面,其中包含了lstm的擴充套件。分別為:tf.nn.rnn
tensorflow學習筆記(1):sess.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=
Win10:tensorflow 學習筆記(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學習筆記(1):Redis的說明與安裝
sets cti ansi c sde pos AR bsd 學習 ash Redis學習筆記(1):Redis說明的安裝 說明 什麽是Redis REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-v
Node.js學習筆記(1):Node.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學習筆記(1):linux基礎知識
1.linux是什麼? Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。 2. 什麼是shell 保護系統核心並對外提供操作介面的軟體 在linux中預設的
Shader學習筆記(1):Shader基礎
最近想學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學習筆記(1):DataGrid單元格實現逐鍵過濾功能
最近,開始學習WPF,其UI設計完全顛覆了傳統的設計理念,為程式設計師提供了極大的自由發揮空間,讓我為之驚歎,且為之著迷。然而,WPF在國內的熱度卻並不高,大部分貼子都是2012年以前的,出版的圖書也很少,參考的資料不多。為了避免在以後的程式設計中少走彎路,也防止自己遺忘,在此記錄