基於Tensorflow和keras的RNN網路

2021-10-23 03:45:28 字數 2373 閱讀 8296

1.簡單的rnn網路:rnn的公式可以是y=φ(wh+b),簡單的rnn網路也被稱為elman網路。

2.改進的rnn網路:當輸出取決於序列的前乙個和後乙個元素時,使用雙向rnn(brnn)。brnn通過堆疊兩個rnn(前向層和後向層)來實現,並且輸出都是rnn隱藏狀態的結果。在前向層中,記憶狀態h從時間步長t流向時間步長t+1,而在後向層中記憶狀態從步長t流向時間步長t-1。兩個層在時間步長t處採用相同的輸入x,但在時間步長t處共同產生輸出。

深度雙向rnn(dbrnn):進一步擴充套件了brnn,新增了多個網路層,通過堆疊brnn,可以讓dbrnn具有層次結構,在brnn中同一層的每個單元格使用相同的引數,但在dbrnn中每個退跌使用不同的引數。

3.lstm網路:通過增加用於控制對過去資訊訪問的門來解決梯度消失或梯度**的問題。構建lstm網路的模組稱為單元(cell),當長序列通過時,lstm單元通過選擇性的學習或刪除資訊以便能更有效的訓練模型。組成單元的函式被稱為門。前面有節rnn的部落格也說到了lstm網路,並且有內部流**

import keras

import os

import sklearn.datasets as detasetslib

from keras.models import sequential

from keras.layers import dense,activation

from keras.layers.recurrent import ******rnn

from keras.optimizers import rmsprop

from keras.optimizers import sgd

獲取mnist資料並從一維結構中的784畫素轉化為二維結構中28*28畫素

from tensorflow.examples.tutorials.mnist import input_data

# mnist=input_data.read_data_sets(os.path.join(datasetslib.datasets_root,'mnist'),one_hot=true)

mnist=input_data.read_data_sets(

'mnist_data'

,one_hot=

true

)x_train=mnist.train.images

x_test=mnist.test.images

y_train=mnist.train.labels

y_test=mnist.test.labels

n_classes=

10x_train=x_train.reshape(-1

,28,28

)x_test=x_test.reshape(-1

,28,28

)

在keras中構建******rnn模型

#建立******rnn模型

訓練模型並輸出測試資料集的分類精度

基於Tensorflow的Keras安裝

平台 ubuntu14.04 版本 python3.5,anaconda3 4.1.1,tensorflow1.4.0 bash anaconda sh 檔名 步驟2 回到剛開啟命令框時的目錄,依此輸入 mkdir pip cd pip vim pipconfig 然後會彈出一些配置 拉到最下面,點...

基於tensorflow實現線性回歸

1.1 回歸分析 回歸分析是一種 性的建模技術,它研究的是因變數 目標 和自變數 器 之間的關係。這種技術通常用於 分析,時間序列模型以及發現變數之間的因果關係。通常使用曲線 線來擬合資料點,目標是使曲線到資料點的距離差異最小 1.2 線性回歸 在統計學中,線性回歸 linear regressio...

基於TensorFlow的MNIST資料集的實驗

一 mnist實驗內容 如下所示 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input data import matplotlib.pyplot as plt import numpy as np...