Kerasの基本

バージョン確認方法

>>> from tensorflow import keras
>>> keras.__version__
'2.1.3-tf'

モデルを作る

kerasでのモデルを作るのは非常に簡単です。
(シンプルなモデルなら)
簡単なフィードフォワードモデルは以下のように作ることができます。

>>> model = keras.models.Sequential()   # 系列モデルの定義
>>> model.add(keras.layers.Flatten(input_shape=[10]))   # 入力層
>>> model.add(keras.layers.Dense(100, activation="relu"))   # 隠れ層1.100素子、活性化関数relu
>>> model.add(keras.layers.Dense(10, activation="relu"))    # 隠れ層2
>>> model.add(keras.layers.Dense(2, activation="softmax"))  # 出力層

keras.models.Sequential()でフィードフォワード型モデル(系列モデル)を定義し、後はそのモデルにadd()によって層を追加していくだけです。

モデルの概要を表示する(summary)

作成したモデルの概要はsummary()で確認することができます。

>>> model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten_1 (Flatten)          (None, 10)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 100)               1100      
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1010      
_________________________________________________________________
dense_3 (Dense)              (None, 2)                 22        
=================================================================
Total params: 2,132
Trainable params: 2,132
Non-trainable params: 0

モデルの情報の取得

まず、今回用いるモデルを定義します。

>>> from tensorflow import keras
>>> from keras.models import Sequential
>>> from keras.layers import Dense, Flatten

>>> model = Sequential()
>>> model.add(Flatten(input_shape=[10,10]))
>>> model.add(Dense(30, activation="relu"))
>>> model.add(Dense(10, activation="relu"))
>>> model.add(Dense(3, activation="softmax"))

モデルの全層の取得

モデルの層はlayersメソッドによって取得できます。

>>> model.layers
[,
 ,
 ,
 ]

各層の取得

各層についてはlayersから単純に取得できます。
もしくはget_layerメソッドを使って取得できます。

>>> model.layers[1]

>>> model.layers[1].name
'dense_1'
>>> model.get_layer(1)
>>> model.get_layer("dense_1")

各層の重みの取得

各層の重みは次のように取得できます。

>>> layer = model.get_layer("dense_1")
>>> weights, biases = layer.get_weights()
>>> weights
array([[-0.06657542,  0.07438962, -0.20593628, ...,  0.10779612,
         0.15730654,  0.17562787],
       [-0.03275071,  0.06982045, -0.11914207, ...,  0.08635698,
        -0.00612141,  0.19765459],
       [-0.08259833, -0.15892193, -0.15185975, ..., -0.07902104,
         0.09752728,  0.20389397],
       ...,
       [ 0.09417264, -0.02841033,  0.18674918, ..., -0.14698422,
         0.12902717,  0.17980148],
       [ 0.12760146, -0.14699513,  0.11971964, ...,  0.13404079,
        -0.14978936,  0.17361005],
       [-0.01327263, -0.10069402, -0.15011078, ..., -0.12120692,
        -0.00900416,  0.19651438]], dtype=float32)
>>> biases
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)

学習モデルの保存と読み込み

保存

モデル自体の保存とパラメータの保存

model_json = model.to_json()
with open(model_path, 'w') as f:
    json.dump(model_json, f, indent=4)

model.save_weights("test_weights.h5")

読み込み

モデルの読み込み

model_json = json.load(open(model_path))
model = keras.models.model_from_json(open(model_json))
model.load_weights("test_weights.h5")
タイトルとURLをコピーしました