TensorFlowの基本モデル実装例
TensorFlowは機械学習と深層学習のためのオープンソースフレームワークであり、ニューラルネットワークの構築と訓練に幅広い機能を提供します。以下に代表的なモデルの実装例を示します。
線形回帰モデル
連続値の予測に用いられる基本的なモデルです。
import tensorflow as tf
# モデル構築
linear_model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_shape=[1])
])
linear_model.compile(optimizer='sgd', loss='mse')
# 学習実行
linear_model.fit(training_inputs, training_targets, epochs=100)
# 予測実施
predictions = linear_model.predict(test_inputs)
畳み込みニューラルネットワーク
画像認識タスクに適した深層学習モデルです。
import tensorflow as tf
# CNNモデル構築
cnn_model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10, activation='softmax')
])
cnn_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# モデル訓練
cnn_model.fit(image_data, labels, epochs=5)
リカレントニューラルネットワーク
時系列データ処理に特化したネットワーク構造です。
import tensorflow as tf
# RNNモデル構築
rnn_model = tf.keras.Sequential([
tf.keras.layers.Embedding(input_dim=1000, output_dim=64),
tf.keras.layers.LSTM(128),
tf.keras.layers.Dense(10, activation='softmax')
])
rnn_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 系列データ学習
rnn_model.fit(sequence_data, sequence_labels, epochs=5)
敵対的生成ネットワーク
新しいデータサンプルを生成するためのモデルアーキテクチャです。
import tensorflow as tf
# ジェネレータモデル
sample_generator = tf.keras.Sequential([
tf.keras.layers.Dense(256, input_shape=(100,), activation='relu'),
tf.keras.layers.Dense(784, activation='sigmoid'),
tf.keras.layers.Reshape((28, 28))
])
# ディスクリミネータモデル
sample_discriminator = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
# GAN統合モデル
gan_system = tf.keras.Sequential([sample_generator, sample_discriminator])
gan_system.compile(optimizer='adam', loss='binary_crossentropy')
オートエンコーダ
データの圧縮と再構成を行うニューラルネットワークです。
import tensorflow as tf
# エンコーダ部分
encoder_net = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(32, activation='relu')
])
# デコーダ部分
decoder_net = tf.keras.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=(32,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(784, activation='sigmoid'),
tf.keras.layers.Reshape((28, 28))
])
# オートエンコーダ統合
autoencoder_model = tf.keras.Sequential([encoder_net, decoder_net])
autoencoder_model.compile(optimizer='adam', loss='binary_crossentropy')
転移学習の実装
事前学習済みモデルを活用した効率的な学習手法です。
import tensorflow as tf
# ベースモデル読み込み
pretrained_base = tf.keras.applications.MobileNetV2(
input_shape=(224, 224, 3),
include_top=False,
weights='imagenet'
)
# 重み固定
pretrained_base.trainable = False
# カスタムモデル構築
transfer_model = tf.keras.Sequential([
pretrained_base,
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(10, activation='softmax')
])
transfer_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
K-Meansクラスタリング
TensorFlowを用いたクラスタリングアルゴリズムの実装例です。
import tensorflow as tf
# データテンソル化
data_tensor = tf.constant(data_points, dtype=tf.float32)
# クラスタ中心初期化
cluster_centers = tf.Variable(tf.slice(tf.random.shuffle(data_tensor), [0, 0], [k, -1]))
# クラスタリング実行
for iteration in range(max_iterations):
# 距離計算
point_distances = tf.reduce_sum(
tf.square(tf.subtract(
tf.expand_dims(data_tensor, 0),
tf.expand_dims(cluster_centers, 1)
)),
2
)
# クラスタ割り当て
cluster_assignments = tf.argmin(point_distances, 0)
# 中心点更新
updated_centers = []
for cluster_index in range(k):
cluster_points = tf.gather(
data_tensor,
tf.reshape(tf.where(tf.equal(cluster_assignments, cluster_index)), [1, -1])
)
updated_centers.append(tf.reduce_mean(cluster_points, axis=0))