バージョン確認方法
>>> 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")