高周波エンジニアのためのAI・機械学習入門(18)パッチアンテナ設計モジュールをPythonで作ったので、電気的に測定できる入力インピーダンス、共振周波数を与えて指向性(Directivity)をKeras3.0を用いたディープラーニング(DNN)による回帰で予測する。
さて前回はパッチサイズ(W、L)、基板厚みh、共振周波数を与えて基板誘電率が予測できるかやってみた。
今回は電気的に測定できる入力インピーダンスRinと共振周波数f0のみを与えて指向性が予測できるかやってみる。
学習データはいつものようにモンテカルロシミュレーションで作る。
import numpy as np
import patchantenna as pa
#モンテカルロシミュレーションでは基板比誘電率、厚み、中心周波数を乱数で振るが、それの最大最小
ermin = 2.0
ermax = 10.0
hmin = 0.1
hmax = 1.0
f0min = 1
f0max = 10
#モンテカルロシミュレーションでデータ作成して保存する。
#周波数と入力インピーダンスを与えて指向性を予測する。
N = 10000
np.random.seed(1)
data = np.empty((0, 2))
label = np.empty((0, 1))
for i in range(N):
er = ermin + (ermax - ermin) * np.random.rand()
h = hmin + (hmax - hmin) * np.random.rand()
f0 = f0min + (f0max - f0min) * np.random.rand()
ant = pa.PatchAntenna(er, h, f0)
Rin = ant.input_impedance()
direc = ant.directivity()
data = np.vstack((data, np.array([Rin, f0])))
label = np.vstack((label, direc))
#保存
np.savez_compressed("directivity.npz", data=data, label=label)
|
そしてKeras3.0を用いたディープラーニング(DNN)で予測する。
まずデータを読み込み、訓練データとテストデータに分ける。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import keras
data_label = np.load("directivity.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)
|
次にモデルを作る。セル数64の3層のモデル。
#正規化
normalizer = keras.layers.Normalization()
normalizer.adapt(x_train)
# Functional APIでDense層を3層にしたDNNを設定
hidden_dim = 64
inputs = keras.Input(shape=(2,))
x = normalizer(inputs)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
outputs = keras.layers.Dense(1)(x)
# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
|
そして学習させる。
batch_size = 32
epochs = 100
keras.utils.set_random_seed(1)
history = model.fit(
x_train,
y_train,
batch_size=batch_size,
epochs=epochs,
validation_split=0.15,
)
y_pred = model.predict(x_test)
metric = keras.metrics.R2Score()
metric.update_state(y_test, y_pred)
result = metric.result()
print(result)
error = np.abs((y_test - y_pred)/y_test*100)
print(error.mean(axis=0))
|
R2score99.7%となかなかいい結果になった。
では図示して確認してみる。
legend = ["Directivity"]
fig, ax = plt.subplots(1, 2, figsize=(12,6))
maxvalue = y_pred.max()
ax[0].scatter(y_pred, y_test, c="r", s=5)
ax[0].plot([0,maxvalue], [0,maxvalue], "--", c="black")
ax[0].set_xlabel("推定した値", fontname='MS Gothic')
ax[0].set_ylabel("実際の値", fontname='MS Gothic')
ax[0].set_xlim(5, maxvalue)
ax[0].set_ylim(5, maxvalue)
ax[0].grid()
ax[0].legend([legend[0] + f" 平均誤差{error.mean():.2f}%"], prop={"family":"MS Gothic"})
ax[1].hist(error, bins = 100)
ax[1].set_xlabel("誤差[%]", fontname='MS Gothic')
ax[1].set_ylabel("頻度", fontname='MS Gothic')
ax[1].grid()
fig.tight_layout()
plt.show()
|
これだけ合っていれば使えそう。次の題材は伝送線路かな。
« 神座で麻婆麵をいただく。しっかり花椒が効いていて、辛さもありなかなか美味しかった。もちろん白菜もたっぷり。 | トップページ | Interface2025年1月号はMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。初歩からAlexNetの転移学習、CNNまで話題が豊富で、なんとMatlab Onlineの半年ライセンスがついてくる。Simulinkや各種toolboxも使える。早速MATLAB入門オンラインコース修了した。 »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年12月16日 Microwave Journalの特集は軍事・ドローンを使ったESM等、SEMCOがCLLCコンバータ向けMLCC発表、SpaceXとSTM(フェイズドアレイアンテナのチップ開発)の協業10年、広帯域バランを使ったバランス測定解説(2025.12.16)
- RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/12/8-2025/12/14(2025.12.14)
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年12月16日 Microwave Journalの特集は軍事・ドローンを使ったESM等、SEMCOがCLLCコンバータ向けMLCC発表、SpaceXとSTM(フェイズドアレイアンテナのチップ開発)の協業10年、広帯域バランを使ったバランス測定解説(2025.12.16)
- RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/12/8-2025/12/14(2025.12.14)
- 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など(2025.12.13)
- 高周波・RFニュース 2025年12月12日 iFixitが水冷スマホRedMagic 11 Proを分解、Qorvoがロボット向けの技術を紹介、SamsungとKTが6Gに向けAI-RANを実証、NordicがnRF9151向けソフトと開発キット発表、Taoglasが6G向けアンテナ設計解説など(2025.12.12)
- 高周波・RFニュース 2025年12月11日 Qualcommが6Gに向けたOBBB法解説、GSMAが欧州のスペクトラム価格についての報告、Menlo Microが防衛向けに高スタンドオフ保護ミリ波スイッチ発表、京セラとローデ&シュワルツがCES2026でミリ波PAAMデモ、iFIxitのスマホアプリ(2025.12.11)
« 神座で麻婆麵をいただく。しっかり花椒が効いていて、辛さもありなかなか美味しかった。もちろん白菜もたっぷり。 | トップページ | Interface2025年1月号はMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。初歩からAlexNetの転移学習、CNNまで話題が豊富で、なんとMatlab Onlineの半年ライセンスがついてくる。Simulinkや各種toolboxも使える。早速MATLAB入門オンラインコース修了した。 »



コメント