基本RNN的Tensorflow實(shí)現(xiàn)是怎樣的

這篇文章給大家介紹基本RNN的Tensorflow實(shí)現(xiàn)是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、泗水網(wǎng)絡(luò)推廣、小程序定制開發(fā)、泗水網(wǎng)絡(luò)營銷、泗水企業(yè)策劃、泗水品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供泗水建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:bm7419.com

今天我們一起看下在tensorflow中基本的RNN是怎么實(shí)現(xiàn)的。

首先,為了更好的理解RNN的運(yùn)行機(jī)制,我們不用tensorflow的相關(guān)RNN的操作,來實(shí)現(xiàn)一個(gè)簡單的RNN模型。這里我們創(chuàng)建一個(gè)初識(shí)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
中所呈現(xiàn)的一個(gè)擁有5個(gè)循環(huán)神經(jīng)元的一層RNN網(wǎng)絡(luò),其中激活函數(shù)用tanh,并且假設(shè)該RNN僅運(yùn)行兩個(gè)時(shí)刻,每個(gè)時(shí)刻的輸入向量的大小為3,通過兩個(gè)時(shí)刻來顯示。代碼如下:

n_inputs = 3
n_neurons = 5
X0 = tf.placeholder(tf.float32, [None, n_inputs])
X1 = tf.placeholder(tf.float32, [None, n_inputs])
Wx = tf.Variable(tf.random_normal(shape=[n_inputs, n_neurons],dtype=tf.float32))
Wy = tf.Variable(tf.random_normal(shape=[n_neurons,n_neurons],dtype=tf.float32))
b = tf.Variable(tf.zeros([1, n_neurons], dtype=tf.float32))
Y0 = tf.tanh(tf.matmul(X0, Wx) + b)
Y1 = tf.tanh(tf.matmul(Y0, Wy) + tf.matmul(X1, Wx) + b)
init = tf.global_variables_initializer()

這個(gè)網(wǎng)絡(luò)有點(diǎn)繞,咋一看像兩層向前傳輸?shù)木W(wǎng)絡(luò),其實(shí)不然,首先,相同的權(quán)重和偏置項(xiàng)都被兩個(gè)層采用了。其次,在每一層都有輸入,并且每一層都有單獨(dú)的輸出。為了運(yùn)行這個(gè)模型,我們需要在兩個(gè)時(shí)刻都對模型進(jìn)行輸入數(shù)據(jù),如下:

import numpy as np
# Mini-batch: instance 0,instance 1,instance 2,instance 3
X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]]) # t = 0
X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]]) # t = 1
with tf.Session() as sess:
    init.run()
    Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})

上面的mini-batch包含了兩個(gè)時(shí)刻的輸入,每個(gè)時(shí)刻有4個(gè)樣本,其中每個(gè)樣本包含3個(gè)特征。最后的Y0_val和Y1_val包括了兩個(gè)時(shí)刻的網(wǎng)絡(luò)所有神經(jīng)元在mini-batch上的輸出。 下面是輸出的結(jié)果:

>>> print(Y0_val) # output at t = 0
[[-0.2964572 0.82874775 -0.34216955 -0.75720584 0.19011548] # instance 0
[-0.12842922 0.99981797 0.84704727 -0.99570125 0.38665548] # instance 1
[ 0.04731077 0.99999976 0.99330056 -0.999933 0.55339795] # instance 2
[ 0.70323634 0.99309105 0.99909431 -0.85363263 0.7472108 ]] # instance 3
>>> print(Y1_val) # output at t = 1
[[ 0.51955646 1. 0.99999022 -0.99984968 -0.24616946] # instance 0
[-0.70553327 -0.11918639 0.48885304 0.08917919 -0.26579669] # instance 1
[-0.32477224 0.99996376 0.99933046 -0.99711186 0.10981458] # instance 2
[-0.43738723 0.91517633 0.97817528 -0.91763324 0.11047263]] # instance 3

關(guān)于基本RNN的Tensorflow實(shí)現(xiàn)是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享文章:基本RNN的Tensorflow實(shí)現(xiàn)是怎樣的
當(dāng)前地址:http://bm7419.com/article40/gejiho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、域名注冊、服務(wù)器托管、外貿(mào)建站Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)