« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/1-2026/2/8 | トップページ | Google Antigravityで、いつも見ている高周波関連サイト数十をスクレイピングしてローカルLLM(OllamaのQwen3:8b)で1週間分まとめてもらうRF Weekly Digestを作ってもらった。モデルはGemini 3 Proで。Google AI StudioのBuildで作ったものよりはちょっと劣るか。 »

2026年2月 9日 (月)

高周波エンジニアのためのAI・機械学習入門(GPU編11)教師あり学習でフィルタ特性(LPF, BPF, HPF)が分類できるかをPythonとKeras 3.0を使ってディープラーニング(DNN)でやってみた。DropOut層追加しても精度100%。

今回はこれをGPUでやってみよう。

高周波エンジニアのためのAI・機械学習入門(7)教師あり学習でフィルタ特性(LPF, BPF, HPF)が分類できるかをPythonとKeras 3.0を使ってディープラーニング(DNN)でやってみた。バリデーションもテストも精度100%になった。人間が一目でわかるものはAIにも簡単なのか。

やることはLPF,BPF,HPFをモンテカルロシミュレーションで10000個作り、OneHot表現で分類しDNNで分類できるかどうか調べる。

入力データの一部をプロットしたもの。

Gpufilterclassfication1

コードはバックエンドにJaxを使ってKerasで作成。前回はDropout層入れなかったが今度は入れている(前回100%精度で汎化が悪そうなので)。


import os
os.environ["KERAS_BACKEND"] = "jax"
import keras
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
plt.rcParams['font.family'] = 'Noto Sans CJK JP'
from jax import config
config.update("jax_enable_x64", False)

data_label = np.load("filter_classification.npz")
data = data_label["data"]
label = data_label["label"]
x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.3, random_state=0)

# Functional APIでDense層+Dropout4層にしたDNNを設定
hidden_dim = 500
inputs = keras.Input(shape=(200, 5))
x = keras.layers.Flatten()(inputs)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dropout(0.5)(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dropout(0.5)(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dropout(0.5)(x)
outputs = keras.layers.Dense(3, activation="softmax")(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=keras.optimizers.Adam(), loss=keras.losses.CategoricalCrossentropy(),    
            metrics=[keras.metrics.CategoricalAccuracy(name="acc"),])

batch_size = 128
epochs = 50
keras.utils.set_random_seed(1)
model.fit(
    x_train,
    y_train,
    batch_size=batch_size,
    epochs=epochs,
    validation_split=0.15,
)
score = model.evaluate(x_test, y_test, verbose=0)
print(f"Test Score{score}")

結果は…最初がロスで二番目が精度で、

Test Score[1.1920930376163597e-07, 1.0]

あれ、また100%になった。まあ人間が見て100%わかるものだしそんなものか。

 

« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/1-2026/2/8 | トップページ | Google Antigravityで、いつも見ている高周波関連サイト数十をスクレイピングしてローカルLLM(OllamaのQwen3:8b)で1週間分まとめてもらうRF Weekly Digestを作ってもらった。モデルはGemini 3 Proで。Google AI StudioのBuildで作ったものよりはちょっと劣るか。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/1-2026/2/8 | トップページ | Google Antigravityで、いつも見ている高周波関連サイト数十をスクレイピングしてローカルLLM(OllamaのQwen3:8b)で1週間分まとめてもらうRF Weekly Digestを作ってもらった。モデルはGemini 3 Proで。Google AI StudioのBuildで作ったものよりはちょっと劣るか。 »

最近の記事

2026年3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

最近のコメント

無料ブログはココログ
フォト