# -*- coding:utf-8 -*-
'''created on 2018-1-19
'''import numpy as np
import tflearn
import tflearn.datasets.mnist as mnist
x, y, testx, testy = mnist.load_data(one_hot=true)
defdo_rnn
(x, y, testx, testy):
# 這裡需要將(1,784)轉變為(28*28),因為lstm需要的輸入是時序的,這裡可以28*28可以看做28行*28列,然後每次計算是一行*28列進行計算,每一行的計算結果
# 都會參與下一行的計算,和mlp,cnn不同
x = np.reshape(x, (-1, 28, 28))
testx = np.reshape(testx, (-1, 28, 28))
# 定義輸入層
net = tflearn.input_data(shape=[none, 28, 28])
# 新增lstm結構,如果後面跟著lstm,那麼需要return_seq=true,輸出3-d tensor [samples, timesteps, output dim]
net = tflearn.lstm(net, 128, return_seq=true)
# 新增lstm結構,輸出2-d tensor [samples, output dim]
net = tflearn.lstm(net, 128)
# 新增一層全連線,加softmax分類器
net = tflearn.fully_connected(net, 10, activation='softmax')
# 定義回歸策略,引數優化器採用adam
net = tflearn.regression(net, optimizer='adam',
loss='categorical_crossentropy', name="output1")
# 生成模型
model = tflearn.dnn(net, tensorboard_verbose=2)
# 訓練模型
model.fit(x, y, n_epoch=1, validation_set=(testx,testy), show_metric=true,
snapshot_step=100)
do_rnn(x, y, testx, testy)
用tensorflow構建動態RNN
直接看 def create cell cell rnn.lstmcell num units rnn cell rnn.multirnncell create cell for in range 2 output,states tf.nn.dynamic rnn rnn cell,x,dtype ...
使用torch實現RNN
本文對的結果進行了復現。在實驗室的專案遇到了困難,弄不明白lstm的原理。到網上搜尋,發現lstm是rnn的變種,那就從rnn開始學吧。帶隱藏狀態的rnn可以用下面兩個公式來表示 可以看出,乙個rnn的引數有w xh,w hh,b h,w hq,b q和h t 其中h t 是步數的函式。參考的文章考...
使用Keras進行深度學習 RNN
rnn 迴圈神經網路,在這裡主要將它用在處理與 序列資料方面.1.rnn網路結構與原理詳解 該圖的左邊是未展開的rnn模型,展開後的rnn模型在右邊詳細的進行了展示.rnn網路的最為重要的一點就是其具有時序性,該時序性在網路的具體的體現就是hi的一系列引數的設定,這些引數的含義就是在i時刻 對應時刻...