TensorFlowによる機械学習モデル実装の基本例

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))

タグ: TensorFlow 機械学習 深層学習 ニューラルネットワーク Python

5月29日 03:24 投稿