高周波エンジニアのためのAI・機械学習入門(5)PythonとKeras3.0を使ってこれまでとは逆に3次のLCバンドパスフィルタ(BPF)のL,Cの素子の値6個から200個×4個のSパラメータ周波数特性(S11,S21)をディープラーニング(DNN)で推定する。Functional APIで複数出力できる。
さて、これまではSパラメータの値を与えてLCバンドパスフィルタのL,Cの素子の値を推定することをしてきた。
逆にL,Cの素子の値を与えてSパラメータが推定できるかをやってみよう。実はKerasでSequentialモデルではなくてFunctional APIを使っていたのは複数の出力に対応できるようにするためだった。outputをリストにすると複数出力できる。
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("data_label.npz")
data = data_label["data"]
label = data_label["label"]
x_train, x_test, y_train, y_test = train_test_split(label, data, test_size=0.3, random_state=0)
y_train_list = [10*np.log10(y_train[:, : ,1]**2 + y_train[:, :, 2]**2), np.angle(y_train[:, :, 1] + 1j*y_train[:, : ,2]),
10*np.log10(y_train[:, : ,3]**2 + y_train[:, :, 4]**2), np.angle(y_train[:, :, 3] + 1j*y_train[:, : ,4])]
y_test_list = [10*np.log10(y_test[:, : ,1]**2 + y_test[:, :, 2]**2), np.angle(y_test[:, :, 1] +1j*y_test[:, : ,2]),
10*np.log10(y_test[:, : ,3]**2 + y_test[:, :, 4]**2), np.angle(y_test[:, :, 3]+1j*y_test[:, : ,4])]
n = y_test_list[0].shape[0]
points = y_test_list[0].shape[1]
S21err = np.zeros(n)
def S21errorPlot(S21test, S21predict):
for i in range(n):
S21err[i] =np.abs(np.max(S21test[i, :]) - np.max(S21predict[i, :]))
plt.hist(S21err, bins = 100, color="red", range=[0,5])
plt.xlabel("通過域の誤差[dB]", fontname='MS Gothic')
plt.ylabel("頻度", fontname='MS Gothic')
plt.grid()
plt.show()
|
でモデルはDNNを使う。今回はL,Cの値がだいぶ違うので正規化は必須。
#正規化
normalizer = keras.layers.Normalization()
normalizer.adapt(x_train)
# Functional APIでDense層を3層にしたDNNを設定
hidden_dim = 200
inputs = keras.Input(shape=(6,))
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(points)(x) for i in range(4)]
# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
model.summary()
|
学習はこんな感じで。
batch_size = 32
epochs = 2000
keras.utils.set_random_seed(1)
history = model.fit(
x_train,
y_train_list,
batch_size=batch_size,
epochs=epochs,
validation_split=0.15,
)
y_pred_list = model.predict(x_test)
S11predict = y_pred_list[0]
S11test = y_test_list[0]
S21predict = y_pred_list[2]
S21test = y_test_list[2]
S21errorPlot(S21test, S21predict)
|
周波数帯域内の誤差の平均値。0.5dBくらいか…あまりよくないように見えるが、
いくつか波形をプロットすると
波形の特徴は結構つかんでるな。6つのパラメータだけからこれが推定できるのはまずまずではなかろうか。
« なか卯でまぐろ山かけ丼をいただく。錦糸卵がいい感じで美味しい。 | トップページ | 高周波・RFニュース 2024年8月13日 Qualcommと富士通のMassive MIMO, OpenRAN無線ユニット、AMDがSilo AIの買収完了、ヴァージニアダイオードのCOOが語る今後のミリ波・テラヘルツ、Wi-Fi7解説、Lava Blaze X 5G分解 »
「パソコン・インターネット」カテゴリの記事
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年2月14日 Microwave Journal今月号で透明アンテナ、6Gタワー、月面用アンテナなど、Keysightが6GでEUと提携、TDKが日本酒の味わいを視覚化&車載PoC用巻き線インダクタ、QualcommがSnapdragon 6 Gen 4 Mobile発表(2025.02.14)
- 高周波・RFニュース 2025年2月13日 iFixitがSamsung Galaxy S25 ultraを分解、ぐりぐり回せる3D CTモデルに、Spirentの5G Outlook レポート、QualcommのオンデバイスAIホワイトペーパー、InfineonがCoolSiC™ MOSFETs 650 Vの Q-DPAKとTOLLパッケージで発表(2025.02.13)
- 高周波・RFニュース 2025年2月12日 GSAが5G standaloneウェビナー開催、CTIAと5G americasがケーブルに対抗してSpectrum for Broadband Competitionで連携、NXPがエッジAIのKinaraを買収、PBKreviewsがSamsung Galaxy S25/plus/ultra全部分解していて5Gミリ波AiPは全部1個(2025.02.12)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年2月14日 Microwave Journal今月号で透明アンテナ、6Gタワー、月面用アンテナなど、Keysightが6GでEUと提携、TDKが日本酒の味わいを視覚化&車載PoC用巻き線インダクタ、QualcommがSnapdragon 6 Gen 4 Mobile発表(2025.02.14)
- 高周波・RFニュース 2025年2月13日 iFixitがSamsung Galaxy S25 ultraを分解、ぐりぐり回せる3D CTモデルに、Spirentの5G Outlook レポート、QualcommのオンデバイスAIホワイトペーパー、InfineonがCoolSiC™ MOSFETs 650 Vの Q-DPAKとTOLLパッケージで発表(2025.02.13)
- 高周波・RFニュース 2025年2月12日 GSAが5G standaloneウェビナー開催、CTIAと5G americasがケーブルに対抗してSpectrum for Broadband Competitionで連携、NXPがエッジAIのKinaraを買収、PBKreviewsがSamsung Galaxy S25/plus/ultra全部分解していて5Gミリ波AiPは全部1個(2025.02.12)
« なか卯でまぐろ山かけ丼をいただく。錦糸卵がいい感じで美味しい。 | トップページ | 高周波・RFニュース 2024年8月13日 Qualcommと富士通のMassive MIMO, OpenRAN無線ユニット、AMDがSilo AIの買収完了、ヴァージニアダイオードのCOOが語る今後のミリ波・テラヘルツ、Wi-Fi7解説、Lava Blaze X 5G分解 »
コメント