C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:95

RNN循環神經網絡實現預測比特幣價格過程詳解

本節將介紹如何利用 RNN 預測未來的比特幣價格。

核心思想是過去觀察到的價格時間序列為未來價格提供了一個很好的預估器。給定時間間隔的比特幣值通過https://www.coindesk.com/api/的 API 下載,以下是 API 文檔的一部分:


經 MIT 授權許可,本節將使用https://github.com/guillaume-chevalier/seq2seq-signal-prediction中的代碼。

具體實現過程

  1. 克隆下面的 GitHub 存儲庫。這是一個鼓勵用戶嘗試 seq2seq 神經網絡架構的項目:


     
  2. 在上述 GitHub 庫基礎上,考慮使用以下能夠下載和標準化比特幣歷史值(美元或歐元)數據的函數,這些函數在 dataset.py 中定義。訓練集和測試集根據 80/20 規律分開,因此,20% 的測試數據是最新的比特幣值。每個示例都包含 40 個美元(USD)數據點,特征軸/維度上是歐元(EUR)數據。數據根據均值和標準差進行歸一化處理,函數 generate_x_y_data_v4 生成尺寸為 batch_size 的訓練數據(或測試數據)的隨機樣本:


     
  3. 生成訓練集、驗證集和測試集,并定義一些超參數,例如 batch_size、hidden_dim(RNN 中隱藏神經元的數量)和 layers_stacked_count(堆棧循環單元的數量)。另外,定義一些用于微調優化器性能的參數,例如優化器的學習率、迭代次數、優化器模擬退火的 lr_decay、優化器的動量以及避免過擬合的 L2 正則化。請注意,GitHub 存儲庫默認 batch_size=5和nb_iters=150,但我設置 batch_size=1000和nb_iters=100000,已經獲得了更好的結果:


     
  4. 將網絡定義為由基本 GRU 單元組成的編碼器–解碼器。網絡由 layers_stacked_count=2 個 RNN 組成,使用 TensorBoard 對網絡進行可視化。請注意,hidden_dim=12 是循環單元中隱藏的神經元:


     
  5. 運行 TensorBoard 并可視化由 RNN 編碼器和 RNN 解碼器組成的網絡:


     
  6. 以下是代碼的流程:


    圖 1 TensorBoard中的比特幣價格預測示例點此查看高清大圖
     
  7. 定義一個 L2 正則化損失函數,以避免過度擬合并具有更好的泛化能力。優化器選擇 RMSprop,其中 learning_rate、decay 和 momentum 的值在第 3 步中已給出:


     
  8. 生成訓練數據并在數據集的 batch_size 示例上運行優化程序,為批量訓練做好準備。同樣,從數據集的 batch_size 示例生成測試數據,為測試做好準備。訓練運行迭代次數為 nb_iters+1,并每訓練 10 次迭代來測試一次結果:


     
  9. 將 n_predictions 測試結果可視化,nb_predictions 取 5,預測值用黃色圓點實際值用藍色×符號表示。請注意,預測從直方圖中的最后一個藍點開始,可以看出,即使是這個簡單的模型也是相當準確的:


     
    結果如下:


    圖 2 比特幣價格預測示例(點此查看高清大圖

解讀分析

比特幣價格的預測是使用一個基于 GRU 基本單元的 RNN 組成的編碼器–解碼器。RNN 非常擅長學習序列,事實上即使是只有兩層和 12 個 GRU 單元的簡單模型,比特幣價格預測也是相當準確的。當然,這個預測代碼并不是鼓勵投資比特幣,而只是討論深度學習方法。而且,為了確認是否存在數據過度擬合的情況,需要進行更多的實驗。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo