1. 程式人生 > 其它 >將Keras權值儲存為動畫視訊,更好地瞭解模型是如何學習的

將Keras權值儲存為動畫視訊,更好地瞭解模型是如何學習的

將Keras權值矩陣儲存為簡短的動畫視訊,從而更好地理解你的神經網路模型是如何學習的。下面是第一個LSTM層的例子,以及一個經過一個學習週期訓練的6級RNN模型的最終輸出層。藍色代表低值,紅色代表高值。

開始

依賴關係

# clone the repo, preferably somewhere in your PYTHONPATHgit clone https://github.com/brannondorsey/keras_weight_animatorcd keras_weight_animator

pip install -r requirements.txt

為了從儲存的權值影象中渲染視訊,你還必須在你的機器上安裝以下包:

  • GNU Parallel
  • ImageMagick
  • FFmpeg

使用模組

這個模組被命名為keras_weight_animator。它公開了一個可以在任何模型fit(.)方法中包含的Keras回撥函式。

## you can optionally add this module to your python path by appending ## its parent directory in sys.path. Uncomment below to do this.# import sys# sys.path.append('path/to/keras_weight_animator/..')from keras_weight_animator import image_saver_callback# assumes a keras model named "model"callbacks = [image_saver_callback(model, 'output_directory')]

model.fit(X_train, y_train, callbacks=callbacks)

image_saver_callback(…)的兩個必需引數是Keras模型和一個output_directory,可以定期地儲存權值影象。在預設情況下,keras_weight_animator將每100個批處理的層權值以PNGs格式儲存在名為epoch_XXX-layer_NAME-weights_YY.的資料夾中的output_directory裡。一旦訓練完成,使用[bin/create_image_sequence.sh](bin/create_image_sequence.sh) path/to/output_directory,你可以從儲存在output_directory中的影象序列建立短動畫視訊片段。使用parallel,mogrify和ffmpeg來建立一個來自output_directory中的每個資料夾中的影象序列,並以.mp4為字尾。視訊檔案將被命名為epoch_XXX-layer_NAME-weights_YY.mp4.這樣的形式。你可以通過將render_videos=True引數傳遞給image_saver_callback(…),從而自動從你的訓練指令碼中執行該指令碼。

可選引數

weight_image_sequences(…)採取了各種可選的關鍵字引數。

  • epochinterval(default=1):在每個epoch_interval週期儲存權值影象。在預設情況下,每一個週期都要儲存權值,但是如果你要訓練很多的週期,你可能會想要改變這個問題。
  • batch_interval(default=100):在每個batch_interval批次儲存權值影象. batch_interval=1將為每個批次儲存權值.
  • cmap (default=’gray’): Matplotlib color map. 我建議嘗試一些不同color maps,特別是RdBu.
  • render_videos (default=False):在model.fit()的結尾部分可以選擇建立一個系統來呼叫create_image_sequences.sh <output_directory> (使用了on_train_end(...) 內部的函式)。將這個設定為True之後會自動為你提供mp4格式的視訊。
# examplecallbacks = [image_saver_callback(model, 'weight_image_sequences', epoch_interval=10, batch_interval=1000, cmap='gray', render_videos=True)]
model.fit(X_train, y_train, callbacks=callbacks)

例子

我已經在examples/.py中包含了這個模組的示例用法。這個例子使用智慧手機從WISDM中的加速度計資料來對人類活動任務進行分類,比如走路、站立、坐著、上樓等等。本例使用一個層的LSTM來對一組60個數據點進行分類,這是屬於六個類中的一個。它將影象序列和視訊輸出到data/wisdm。

# download and uncompress the WISDM datacd data
curl http://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz -o WISDM_ar_latest.tar.gz
tar -xzf WISDM_ar_latest.tar.gz
rm WISDM_ar_latest.tar.gzcd ../example

python wisdm.py

想法

使用bash指令碼來利用並行、ImageMagick,和FFMPEG並不是最好的解決方案,但它值得我花時間去操作。

lil專案的目標是編寫一個快速的工具,讓我能夠更好地理解在各種神經網路中權重是如何變化的。

如果你有興趣貢獻或維護一個更“乾淨”的版本,請聯絡(mailto:[email protected])。

歸因和許可

這個模組是© Brannon Dorsey 2017 在麻省理工學院的許可下發布。你可以自由使用、修改、分發、銷售等,這個軟體基於這些條款下, 地址:https://github.com/brannondorsey/keras_weight_animator/blob/master/LICENSE。示例資料來自於福特漢姆大學釋出的 WIreless Sensor Datamining Actitracker資料集:

Jennifer R. Kwapisz, Gary M. Weiss and Samuel A. Moore (2010). Activity Recognition using Cell Phone Accelerometers, Proceedings of the Fourth International Workshop on Knowledge Discovery from Sensor Data (at KDD-10), Washington DC. [PDF]

此文為編譯作品,出處為:https://github.com/brannondorsey/keras_weight_animator#optional-parameters