Keras-TCN的API筆記
文章目錄
因為想用TCN進行時間序列預測,所以我打算研究一下怎麼寫程式碼。
從官網機翻來的。
這是個不成熟的坑,先挖再說。
API
https://pypi.org/project/keras-tcn/
pip install keras-tcn
中文:https://www.cnpython.com/pypi/keras-tcn
https://github.com/philipperemy/keras-tcn/tree/master/tasks
TCN優勢
在大量任務上優於LSTM
並行性、靈活的接受 field 大小、穩定的梯度、訓練時的低記憶要求、可變長度輸入
API引數
TCN(
nb_filters=64,
kernel_size=2,
nb_stacks=1,
dilations=[1, 2, 4, 8, 16, 32],
padding=‘causal’,
use_skip_connections=True,
dropout_rate=0.0,
return_sequences=True,
activation=‘linear’,
kernel_initializer=‘he_normal’
, use_batch_norm=False, **kwargs)
nb_filters: Integer
在卷積層中使用的過濾器的數量,類似於LSTM。
kernel_size
整數,在每個卷積層中使用的核心kernel的大小。
dilations
列表。擴張的列表的一個例子是 : [1, 2, 4, 8, 16, 32, 64].
nb_stacks
整數。要使用的剩餘塊的堆疊( stacks of residual blocks)數量。
padding
String. The padding to use in the convolutions. ‘causal’ for a causal network (as in the original implementation) and ‘same’ for a non-causal network.
字串。在卷積中使用的填充。
在因果網路中使用“因果”(如同最初的實現),而在非因果網路中使用“相同”。
use_skip_connections
Boolean. If we want to add skip connections from input to each residual block.
布林。如果我們想要新增從輸入到每個剩餘塊的跳過連線。
return_sequences
Boolean. Whether to return the last output in the output sequence, or the full sequence.
布林。
是返回輸出序列中的最後一個輸出,還是返回完整序列。
dropout_rate
Float between 0 and 1. Fraction of the input units to drop.
在0和1之間浮動。要下降的輸入單位的分數。
activation
The activation used in the residual blocks o = activation(x + F(x)).
剩餘塊中使用的啟用o =啟用(x + F(x))。
kernel_initializer
Initializer for the kernel weights matrix (Conv1D).
核權值矩陣(Conv1D)的初始化式。
use_batch_norm
Whether to use batch normalization in the residual layers or not.
是否在剩餘層中使用批處理規範化。
kwargs
Any other arguments for configuring parent class Layer. For example “name=str”, Name of the model. Use unique names when using multiple TCN.
用於配置父類層的任何其他引數。
例如"name=str",模型的名稱。使用多個TCN時使用唯一名稱。
Input shape
三維張量形狀(batch_size, timesteps, input_dim)。
具有形狀的三維張量(批量大小、時間步長、輸入維度)
如果每個序列都有不同的長度,這可能很有用:多個長度序列的例子。
Output shape
shape (batch_size, timesteps, nb_filters).
如果return_sequences=true:具有形狀的三維張量(批量大小、時間步長、nb_過濾器)
如果return_sequences=false:具有形狀的2d張量(批量大小,nb_過濾器)
TCN支援的任務型別
迴歸(多對一),例如新增問題
分類(多對多),例如複製記憶體任務
分類(多對一),例如順序任務
對於多對多回歸,目前一個廉價的解決方案是更改最終密集層的單元數。
程式碼示例
①載入模組
from tensorflow.keras.layers import Dense
from tensorflow.keras import Input, Model
from tcn import TCN, tcn_full_summary
②確定batch的大小,時間步,輸入維度
batch_size, timesteps, input_dim = None, 20, 1
③得到訓練集
def get_x_y(size=1000):
import numpy as np
pos_indices = np.random.choice(size, size=int(size // 2), replace=False)
x_train = np.zeros(shape=(size, timesteps, 1))
y_train = np.zeros(shape=(size, 1))
x_train[pos_indices, 0] = 1.0
y_train[pos_indices, 0] = 1.0
return x_train, y_train
④搭建網路(沒太懂這步,有待研究,備註瞎標)
彷彿它不用 sequential
#i是輸入,讀入之前設定的引數
i = Input(batch_shape=(batch_size, timesteps, input_dim))
#TCN層
o = TCN(return_sequences=False)(i) # The TCN layers are here.
#全連線層
o = Dense(1)(o)
#模型例項
m = Model(inputs=[i], outputs=[o])
在上面的例子中,tcn也可以像這樣堆疊在一起
o = TCN(return_sequences=True)(i)
o = TCN(return_sequences=False)(o)
⑤配置訓練方法,選擇優化器和損失函式
m.compile(optimizer='adam', loss='mse')
⑥列印網路結構
tcn_full_summary(m, expand_residual_blocks=False)
⑦擬合
x, y = get_x_y()
m.fit(x, y, epochs=10, validation_split=0.2)
現成的TCN使用
完整程式碼見 cf. tasks/
from tcn import compiled_tcn
model = compiled_tcn(...)
model.fit(x, y) # Keras model.
相關文章
- 筆記:API 和 Web API筆記APIWeb
- ffmpeg常用API筆記API筆記
- TensorFlow Java API 學習筆記JavaAPI筆記
- 筆記七:Search API 概覽筆記API
- 筆記:editor.md 常用 api筆記API
- Windows API 程式相關筆記WindowsAPI筆記
- ES 筆記七:Search API 概覽筆記API
- 《Kafka筆記》3、Kafka高階APIKafka筆記API
- 《學習筆記》.NET Core API搭建筆記API
- Amazon Selling Partner API 開發筆記API筆記
- jQuery筆記整理教程(常用的API和基礎)jQuery筆記API
- 重學前端筆記23-DOM API前端筆記API
- ES 筆記四十四:Update By Query & Reindex API筆記IndexAPI
- docker筆記35-資源指標API及自定義指標APIDocker筆記指標API
- 筆記三:基本概念-文件、索引和 REST API筆記索引RESTAPI
- SAP FSM 學習筆記(一) : 使用API消費FSM的資料筆記API
- Jdk8 新日期工具類 Api 學習筆記JDKAPI筆記
- Redis學習筆記 – 資料型別與API(1)KeyRedis筆記資料型別API
- 小紅書API介面測試 | 小紅書筆記詳情 API 介面測試指南API筆記
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 實戰架構 API 伺服器 學習筆記 (1)序言架構API伺服器筆記
- SSM框架實現高併發秒殺API學習筆記SSM框架API筆記
- numpy的學習筆記\pandas學習筆記筆記
- Linux指令記不住的筆記Linux筆記
- Yii2開發筆記系列二:使用module做api版本化筆記API
- 李炎恢 Laravel API介面學習筆記[基於 Laravel Sail 環境]LaravelAPI筆記AI
- Kettle筆記3-三種執行方式:圖形/命令列/API筆記命令列API
- 《Java8實戰》-第十二章筆記(新的日期和時間API)Java筆記API
- 印象筆記 --- 方法分享筆記筆記
- js類的筆記JS筆記
- AIDL的使用筆記AI筆記
- go interface 的筆記Go筆記
- MongoDB的聚合筆記MongoDB筆記
- 我的Webpack 筆記Web筆記
- git的使用筆記Git筆記
- LabVIEW的ActorFramework筆記ViewFramework筆記
- ScottPlot的使用筆記筆記
- Docker的使用筆記Docker筆記