日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

keras 多层lstm_机器学习100天-Day2403 循环神经网络RNN(训练多层RNN)

發布時間:2023/12/2 循环神经网络 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keras 多层lstm_机器学习100天-Day2403 循环神经网络RNN(训练多层RNN) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:本文依據《Sklearn 與 TensorFlow 機器學習實用指南》完成,所有版權和解釋權均歸作者和翻譯成員所有,我只是搬運和做注解。

進入第二部分深度學習

第十四章循環神經網絡

循環神經網絡可以分析時間序列數據,諸如股票價格,并告訴你什么時候買入和賣出。在自動駕駛系統中,他們可以預測行車軌跡,避免發生交通意外。

循環神經網絡可以在任意長度的序列上工作,而不是之前討論的只能在固定長度的輸入上工作的網絡。

舉個例子,它們可以把語句,文件,以及語音范本作為輸入,使得它們在諸如自動翻譯,語音到文本或者情感分析(例如,讀取電影評論并提取評論者關于該電影的感覺)的自然語言處理系統中極為有用。

另外,循環神經網絡的預測能力使得它們具備令人驚訝的創造力。

可以要求它們去預測一段旋律的下幾個音符,隨機選取這些音符的其中之一并演奏它。然后要求網絡給出接下來最可能的音符,演奏它,如此周而復始。

同樣,循環神經網絡可以生成語句,圖像標注等。

在本章中,教程介紹以下幾點

  • 循環神經網絡背后的基本概念
  • 循環神經網絡所面臨的主要問題(在第11章中討論的消失/爆炸的梯度),廣泛用于反抗這些問題的方法:LSTM 和 GRU cell(單元)。
  • 展示如何用 TensorFlow 實現循環神經網絡。最終我們將看看及其翻譯系統的架構。

5.構建多層RNN

我們在這里構建一個三層的RNN。

基本參數設定如下

n_steps = 28n_inputs = 28n_neurons = 100n_outputs = 10learning_rate = 0.001n_layers = 3

構建三層,可以發現是使用for循環,循環3次將之前一層的神經網絡復制成三個壓入一個layers得list中。

layers = [tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)for layer in range(n_layers)]

然后使用tf.nn.rnn_cell.MultiRNNCell(layers)處理layers。

X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])y = tf.placeholder(tf.int32, [None])# 原始一層的神經網絡# basic_cell = tf.keras.layers.SimpleRNNCell(units=n_neurons)layers = [ tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu) for layer in range(n_layers)]# 這個地方應該也可以使用Keras,但是沒有查到multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(layers)outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)# tf.concat是連接兩個矩陣的操作,其中values應該是一個tensor的list或者tuple。axis則是我們想要連接的維度。tf.concat返回的是連接后的tensor。states_concat = tf.concat(axis=1, values=states)logits = tf.layers.dense(states_concat, n_outputs)xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)loss = tf.reduce_mean(xentropy)optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)training_op = optimizer.minimize(loss)correct = tf.nn.in_top_k(logits, y, 1)accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))init = tf.global_variables_initializer()(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()X_train = X_train.astype(np.float32).reshape(-1, 28 * 28) / 255.0X_test = X_test.astype(np.float32).reshape(-1, 28 * 28) / 255.0y_train = y_train.astype(np.int32)y_test = y_test.astype(np.int32)X_valid, X_train = X_train[:5000], X_train[5000:]y_valid, y_train = y_train[:5000], y_train[5000:]def shuffle_batch(X, y, batch_size): rnd_idx = np.random.permutation(len(X)) n_batches = len(X) // batch_size for batch_idx in np.array_split(rnd_idx, n_batches): X_batch, y_batch = X[batch_idx], y[batch_idx] yield X_batch, y_batchX_test = X_test.reshape((-1, n_steps, n_inputs))n_epochs = 10batch_size = 150with tf.Session() as sess: init.run() for epoch in range(n_epochs): for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size): X_batch = X_batch.reshape((-1, n_steps, n_inputs)) sess.run(training_op, feed_dict={X: X_batch, y: y_batch}) acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch}) acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test}) print(epoch, "Last batch accuracy:

總結

以上是生活随笔為你收集整理的keras 多层lstm_机器学习100天-Day2403 循环神经网络RNN(训练多层RNN)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。