« cgpのRocky Linux8 でtensorflow | メイン | tensorflow GPU複数使い »
2022年10月15日
tensorflow 3つの方法
Sequential APIによるモデルの構築
Functional APIによるモデル構築
Subclassing API(Model Subclassing)によるモデル構築
◆Sequential APIによるモデルの構築 Sequentialというのは「線形の」 → 縦にならんだ・層を積み重ねただけのモデルだけ作れる
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
--------------
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32,32,3)))
といった書き方も可能
◆Functional APIによるモデル構築
# Functional APIでモデルを定義します。
inputs = tf.keras.layers.Input(shape=(28, 28), name='inputs')
flatten = tf.keras.layers.Flatten(name='flatten')(inputs)
hidden1 = tf.keras.layers.Dense(128, activation='relu', name='relu1')(flatten)
hidden2 = tf.keras.layers.Dense(128, activation='relu', name='relu2')(hidden1)
concat = tf.keras.layers.Concatenate(name='concat')([hidden1, hidden2])
outputs = tf.keras.layers.Dense(10, activation='softmax', name='softmax')(concat)
# 入出力を定義します。
model = tf.keras.models.Model(inputs=inputs, outputs=outputs, name='functional')
#ここから先はSequential APIと同じ
model.compile(optimizer="sgd", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(x = x_train, y = y_train, epochs=50, batch_size=128)
model.evaluate(x = x_test, y = y_test, verbose=2)
◆Subclassing APIはいつも使ってるので、省略
投稿者 muuming : 2022年10月15日 05:54