LSTM Keras下的程式碼解讀
可以參考 官方文件
首先,
model = Sequential()
是給神經網路起了頭,後面的model.add()是一直加層。
model.add(Activation('relu'))
這個啟用函式(Activation)keras提供了很多備選的,我這兒用的是ReLU這個,其他還有
- tanh
- sigmoid
- hard_sigmoid
- linear
等等,keras庫是不斷更新的,新出來的論文裡面用到的更優化的啟用函式裡面也會有,比如: - LeakyReLU
- PReLU
- ELU
目標函式
model.compile(loss='mean_squared_error', optimizer='sgd')
compile
編譯用來配置模型的學習過程
fit
本函式將模型訓練nb_epoch
輪
儲存模型
from keras.models import load_model
model.save('my_model.h5')
# creates a HDF5 file 'my_model.h5'
del model
# deletes the existing model
# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')
以下例子可以直接執行,學習參考用。
# -*- coding: utf-8 -*-
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
import cPickle
# 構建資料集
X_data = np.linspace(-1,1,100)[:, np.newaxis]
noise = np.random.normal(0,0.05,X_data.shape)
y_data = np.square(X_data) + noise + 0.5
# 構建神經網路
model = Sequential()
model.add(Dense(10, input_dim=1, init='normal', activation='relu')) #全連線層, 10個神經元,1維向量,啟用函式是relu
model.add(Dense(1, init='normal'))
sgd = SGD(lr=0.1) #梯度下降法,用在神經網路的反饋階段,不斷地學習,調整每一層卷積的引數
model.compile(loss='mean_squared_error', optimizer=sgd)
# 訓練
model.fit(X_data, y_data, nb_epoch=1000, batch_size=100, verbose=0)
# 儲存模型
model.save_weights('MyNets.h5')
cPickle.dump(model, open('MyNets.pkl',"wb"))
# 呼叫模型
#model = cPickle.load(open('MyNets.pkl',"rb"))
# 在原資料上預測
y_predict=model.predict(X_data,batch_size=100,verbose=1)
# 視覺化
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(X_data, y_data)
ax.plot(X_data,y_predict,'r-',lw=5)
plt.show()
相關文章
- pytorch lstm原始碼解讀PyTorch原始碼
- 使用Keras進行深度學習:(六)LSTM和雙向LSTM講解及實踐Keras深度學習
- 手把手教你開發CNN LSTM模型,並應用在Keras中(附程式碼)CNN模型Keras
- 【Python】keras使用LSTM擬合曲線PythonKeras
- Masonry 原始碼解讀(下)原始碼
- keras讀寫檔案Keras
- CRF as RNN 程式碼解讀CRFRNN
- 最後一期:如何更新LSTM模型?(附程式碼)| 博士帶你學LSTM模型
- 零程式碼的多方面解讀
- 如何更好、更快的解讀jive的程式碼
- 資料 + 程式碼,基於 Keras 的煙火檢測Keras
- 零程式碼開發的價值解讀
- mac下c++程式碼閱讀工具MacC++
- 如何開發和評估Vanilla LSTM模型?(附程式碼)模型
- 機器閱讀理解Match-LSTM模型模型
- 白話--長短期記憶(LSTM)的幾個步驟,附程式碼!
- 從解讀 BDC 自動生成的程式碼談起,講解 SAPGUI 的程式組成部分試讀版GUI
- 【小白學PyTorch】21 Keras的API詳解(下)池化、Normalization層PyTorchKerasAPIORM
- LSTM入門必讀:從入門基礎到工作方式詳解
- 目標識別程式碼解讀整理
- 解讀基礎設施即程式碼
- 開發Encoder-Decoder LSTM模型的簡單教程(附程式碼)模型
- 如何提高程式碼的可讀性? - 讀《編寫可讀程式碼的藝術》
- Laravel 原始碼的解讀Laravel原始碼
- OceanBase 原始碼解讀(九):儲存層程式碼解讀之「巨集塊儲存格式」原始碼
- 解讀GBK編碼格式下的" "(類似於空格)的字元字元
- 如何用LSTMs做預測?(附程式碼)| 博士帶你學LSTM
- 機器學習博士手把手教你入門LSTM(附程式碼資料)機器學習
- Flutter 極簡 App 程式碼簡單解讀FlutterAPP
- 單週期cpu設計程式碼解讀
- 谷歌官方 Android MVP 模式程式碼解讀谷歌AndroidMVP模式
- 小程式之豆瓣電影原始碼解讀原始碼
- 大棚解讀卓越程式設計師密碼程式設計師密碼
- BIO到NIO原始碼的一些事兒之NIO 下 Buffer解讀 下原始碼
- Vue 原始碼解讀(8)—— 編譯器 之 解析(下)Vue原始碼編譯
- 如何使用學習曲線來診斷你的LSTM模型的行為?(附程式碼)模型
- 讀《編寫可讀程式碼的藝術》
- 《神經網路的梯度推導與程式碼驗證》之LSTM前向和反向傳播的程式碼驗證神經網路梯度反向傳播