1. 程式人生 > >tf.contrib.seq2seq.BahdanauAttention函式和tf.contrib.seq2seq.LuongAttention函式學習

tf.contrib.seq2seq.BahdanauAttention函式和tf.contrib.seq2seq.LuongAttention函式學習

tf.contrib.seq2seq.BahdanauAttention()

__init__(
    num_units,
    memory,
    memory_sequence_length=None,
    normalize=False,
    probability_fn=None,
    score_mask_value=None,
    dtype=None,
    name='BahdanauAttention')

有兩種attention模式:

1.Bahdanau attention

現在,對上面的解碼器稍作修改。我們假設時刻tt′的背景向量為ctct′。那麼解碼器在t

t′時刻的隱含層變數

st=g(yt1,ct,st1)

令編碼器在tt時刻的隱含變數為htht,解碼器在tt′時刻的背景向量為

ct=t=1Tαttht

也就是說,給定解碼器的當前時刻tt′,我們需要對編碼器中不同時刻tt的隱含層變數求加權平均。而權值也稱注意力權重。它的計算公式是

αtt=exp(ett)Tk=1exp(etk)

ettRet′t∈R的計算為:

ett=a(st1,ht)

其中函式a有多種設計方法。在Bahanau的論文中,

ett=vtanh(Wsst1+Whht)

其中的vWsWh和編碼器與解碼器兩個迴圈神經網路中的各個權重和偏移項以及嵌入層引數等都是需要同時學習的模型引數。   

2. 當normalize=True,上面所提到的a模型發生的變化.變化如下:

v = g * v / ||v||

相關推薦

tf.contrib.seq2seq.BahdanauAttention函式tf.contrib.seq2seq.LuongAttention函式學習

tf.contrib.seq2seq.BahdanauAttention()__init__(     num_units,     memory,     memory_sequence_length=None,     normalize=False,     proba

tf.nn.conv2d函式tf.nn.max_pool函式介紹

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 介紹引數: input:指卷積需要輸入的引數,具有這樣的shape[batch, in_height, in_width, in_c

tf.random_uniform函式tf.zeros函式具體用法

tf.random_uniform用法: random_uniform(     shape,          一維整數張量或 Python 陣列。輸出張量的形狀。     minval=0,         dtype 型別的 0-D 張量或 Python 值;生成的隨機值範圍的下限;預設為0     m

tf.gfile函式gfile.MakeDirs(FLAGS.train_dir)函式的詳細說明

簡介這些函式和python中的os模組非常的相似,一般都可以用os模組代替吧gfile API介紹下面將分別介紹每一個gfile API!2-1)tf.gfile.Copy(oldpath, newpath, overwrite=False)拷貝原始檔並建立目標檔案,無返回,

tf.constant 的用法 以及tf.fill的區別

tf.constant tf.constant( value, dtype=None, shape=None, name='Constant', vertify_shape=Fa

虛解構函式純虛解構函式的作用

1 虛解構函式 作用: 當使用基類的指標刪除一個派生類的物件時,可以呼叫派生類的解構函式。由於有虛擬函式表的存在,這裡就發生了多型,使得派生類的解構函式能夠被呼叫。反之,如果基類的解構函式不是虛擬函式,則使用基類的指標刪除派生類的物件時,不會呼叫派生類的解構函式

oracle之percent_rank() over()函式PERCENTILE_CONT() within group()over()函式詳解

建立一個臨時表 create table EMP ( EMPNO NUMBER(4) not null, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL

C++純虛擬函式Java中的抽象函式區別

一直我對c++純虛擬函式的理解有個誤區:純虛擬函式是不能給出定義的。果然是學藝不精。c++中的純虛擬函式和java中的抽象函式很類似,我把相關概念搞混淆了,這裡總結一下:java中的抽象函式是隻有函式

尤拉函式莫比烏斯函式的求法

#include<iostream> #include<cstdio> #include<cmath> using namespace std; typedef

C++ 複製建構函式賦值運算子過載函式

宣告一個空的類testsize,sizeof(testsize)為1,為其宣告建構函式和解構函式,依舊為1 建構函式不能使用關鍵字virtual,解構函式可以 一旦類中存在虛擬函式,就會為該類生成虛擬函式表,並在每一個例項中新增一個指向虛擬函式表的指標,從而大小為一個指標大

C中的qsort函式C++中的sort函式的理解與使用

一、qsort()函式 原型: _CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); 引數解釋: 1、待排序陣列首地址;2、陣列中待排序元素數

PostgreSql函式操作符一之時間函式

PostgreSql常用的時間函式 1.時間間隔age函式 函式描述:計算兩個日期之間相隔多少天,單個引數時表示與當前日期(current_date)相比 引數:age(timestamp,timestamp),age(timestamp) 返回值:interval,兩個

8Linux伺服器程式設計之:chdir()函式cd命令,getcwd()函式pwd

 1chdir依賴的標頭檔案 #include<unistd.h> 2函式定義 int chdir(const char *path); int fchdir(int fd)

類String的建構函式、拷貝建構函式、解構函式賦值運算子過載函式的實現

#include <iostream> using namespace std; class String { public: String(const char* str= NULL); String(const String& other); ~

Thinkphp5助手函式Thinkphp3的單字母函式對應參照表

thinkphp5中取消了3.2版本中的單字母函式,初用tp5可能不大適應,下邊給出兩者的對應參照表,以便查閱。 3.2版本 5.0版本 C config E exception G debug L lang T 廢除 I input

交叉熵損失函式均方誤差損失函式

交叉熵 分類問題中,預測結果是(或可以轉化成)輸入樣本屬於n個不同分類的對應概率。比如對於一個4分類問題,期望輸出應該為 g0=[0,1,0,0] ,實際輸出為 g1=[0.2,0.4,0.4,0] ,計算g1與g0之間的差異所使用的方法,就是損失函式,分類問題中常用損

由 [SDOI2012]Longge的問題 探討尤拉函式莫比烏斯函式的一些性質關聯

本題題解 題目傳送門:https://www.luogu.org/problem/P2303 給定一個整數\(n\),求 \[ \sum_{i=1}^n \gcd(n,i) \] 蒟蒻隨便yy了一下搞出來個\(O(\sqrt{n})\)的演算法 這題資料怎麼這麼水 首先看到gcd我們就下意識的對它反演一波

Tensorflow正則化函式tf.contrib.layers.l1_regularizer()tf.contrib.layers.l2_regularizer()

L1正則化公式: L2正則化公式: tf.contrib.layers.l1_regularizer()和tf.contrib.layers.l2_regularizer()是Tensoflow中L1正則化函式和L2正則化函式的API。 其基本用法如下: import

tf.nn.conv2d tf.contrib.slim.conv2d的區別

有程式碼用到卷積層是tf.nn.conv2d 或者tf.contrib,slim.conv2d. 這兩個函式呼叫的卷積層是否一致,檢視原始碼如下: conv2d(input, filter, strides, padding, u

TensorFlow函式tf.contrib.layers.flatten()

tf.contrib.layers.flatten(A)函式使得P保留第一個維度,把第一個維度包含的每一子張量展開成一個行向量,返回張量是一個二維的,返回的shape為[第一維度,子張量乘積)。 一般用於卷積神經網路全連線層前的預處理,因為全連線層需要將輸入資料變為一個向量,向量大小為[batc