« 2024年7月 | トップページ | 2024年9月 »

2024年8月

2024年8月31日 (土)

映画「きみの色」を観てきた。よかった。楽器は本物(moog テルミン!、リッケンバッカーのギター、ローランドのGO:PIANOなど)でその他は小ボケ(レタス太郎、動物がお医者さん、天使もいいかもねなど)で笑った。God almightyも。曲もよくて惑星のが好き。でDX7は?

公開初日に観てきました。

20240830-134800

とにかく楽器が全部本物!確認できたもので

・カシオのSA-46

https://www.casio.com/jp/electronic-musical-instruments/product.SA-46/

・リッケンバッカーのギター

https://www.shimamura.co.jp/shop/seisekisakuragaoka/product/20220123/3230

・moogのテルミン

https://korg-kid.com/moog/product-details/etherwave-theremin/

・RolandのGO:PIANO88

https://www.roland.com/jp/products/gopiano_go-88p/

しかしヤマハのDX7は…あそこ笑った。そっちかい!

楽器以外は全部小ボケで

・トミタレンタリース

・動物がお医者さん

・レタス太郎

・パイの木

・天使もいいかもね

などなど。もっとたくさんあります。

曲もよくて、3曲目の惑星の曲、聞いたらずっと鼻歌で歌いたくなる。

ストーリーはネタバレにならないように書かないですがまさに青春×音楽。特にある人の色が見えるところとか、おばあちゃんとか、God almighty、エンドクレジット後がよかった。ただきみちゃんの辞めた理由が結局なんだったのかという。

Mr.Childrenのin the pocketもいいです。お勧め。

 

2024年8月30日 (金)

高周波・RFニュース 2024年8月30日 Point2の誘電体線路e-Tube解説、AmpleonのRF計算ツール、TDKのMR磁気センサでの心臓計測、SEMCOがFCBGAを50%に、FinwaveとGlobalFoundriesがRF GaN-on-Siで協業、Google Pixel 9 Pro XL分解(ミリ波なしモデル)、3GPPのWG

・Point2の誘電体線路e-Tube解説

Multi-Terabit Interconnect Solutions for AI/ML Data Centers

202408301

・AmpleonのRF計算ツール

Online RF calculators help engineers

202408302

・TDKのMR磁気センサでの心臓計測

世界初、高感度MR磁気センサアレイによる心臓活動の計測を
通常の環境下で実証

202408303

・SEMCOがFCBGAを50%に

Samsung Electro-Mechanics’ FCBGA Recognized by Global Customers Target to Increase High-Value FCBGA such as Servers, AI, Automotive, and Networks to 50% by 2026

202408304

・FinwaveとGlobalFoundriesがRF GaN-on-Siで協業

Finwave Semiconductor and GlobalFoundries Partner on RF GaN-on-Si Technology for Cellular Handset Applications

・Google Pixel 9 Pro XL分解(ミリ波なしモデル)

 

・3GPPのWG

Maastricht Mega success

2024年8月29日 (木)

高周波エンジニアのためのAI・機械学習入門(10) Pythonの時系列用ライブラリtsleanを使ってRFフィルタ(LPF、BPF、HPF)のSパラメータ周波数特性がクラスタリング(教師なし学習)できるか見てみる。まずはTime Series K-means法で。

前回までは全て教師あり学習だったが、今回は教師なし学習。

Pythonのライブラリtslearnは時系列データのクラスタリングなどができる。

https://tslearn.readthedocs.io/en/stable/#

Sパラメータの周波数特性を時系列と見なしてこれを適用してみよう。

入力データは以前作ったローパスフィルタ、バンドパスフィルタ、ハイパスフィルタが混在したもの。

高周波エンジニアのためのAI・機械学習入門(6)教師あり学習で分類をするためのデータ作成として、Pythonとscikit-rfで作ったLCフィルタ合成ライブラリfiltersynthを使ってモンテカルロシミュレーションでLPF、BPF、HPFをたくさん作ってSパラ入力、出力OneHot表現で分類を行う。

Filterclassification02_20240828173601

 

これを一番簡単なアルゴリズムTime Series K-means法でクラスタリングしてみる。ユークリッド距離を使う。

https://tslearn.readthedocs.io/en/stable/gen_modules/clustering/tslearn.clustering.TimeSeriesKMeans.html

コードはこんな感じで。


import numpy as np
import matplotlib.pyplot as plt
from tslearn.utils import to_time_series
from tslearn.clustering import TimeSeriesKMeans
from tslearn.clustering import KShape
from tslearn.preprocessing import TimeSeriesScalerMeanVariance

data_label = np.load("filter_classification.npz")
data = data_label["data"]
s21dB = 10*np.log10(data[:, :, 3]**2 + data[:, :, 4]**2)
s21dB = to_time_series(s21dB)
n = 3
s21dB_scaled = TimeSeriesScalerMeanVariance().fit_transform(s21dB)
km = TimeSeriesKMeans(n_clusters=n, verbose=True, random_state=42)
pred = km.fit_predict(s21dB_scaled)
freq = np.linspace(0.1,20,s21dB.shape[1])
fig = plt.figure(figsize=(12,4))
for yi in range(n):
    plt.subplot(1, 3, yi + 1)
    for xx in s21dB[pred == yi]:
        plt.plot(freq, xx.ravel(), "b-", alpha=.1)
        plt.ylim(-60, 0)
        plt.xlabel("Frequency[GHz]")
        plt.ylabel("S21[dB]")
        plt.grid(True)
    plt.text(0.55, 0.25,'Cluster %d' % (yi + 1),transform=plt.gca().transAxes)
plt.tight_layout()

まずは3クラスタに分けてみる。

Kmeans1

うーん混ざってるな…もうちょっとクラスタを増やして9クラスタにしてみる。

Kmeans2

これは完全に分類できているな。ローパスの浅いのと深いのまで分類できている。

次は別のアルゴリズム、K-shape法を試してみる。

2024年8月28日 (水)

高周波・RFニュース 2024年8月28日 iFixitのGoogle Pixel 9 Pro XL分解、ミリ波AiPは上部に1つ、TechInsigtsのeBook Chiplets and Advanced Packaging、SEMCOの車載MLCC(X7R,2kV, 470nFまで)、Kyocera AVXのRF MLCC、GSAの4G-5G FWA調査、QualcommがSequansの4G IoTを買収

・iFixitのGoogle Pixel 9 Pro XL分解、ミリ波AiP(Antenna in Package)は上部に1つ

202408281

・TechInsigtsのeBook Chiplets and Advanced Packaging

Chiplets and Advanced Packaging: A Deep Dive into Industry Evolution and AI Integration

202408282

・SEMCOの車載MLCC(X7R,2kV, 470nFまで)

Samsung Electro-Mechanics announces the release of its new automotive MLCC products (1812 inch, X7R, 2.2nF~470nF, 250Vdc~2kV)

202408283

・Kyocera AVXのRF MLCC

New Miniature RF MLCCs for Communications Applications | KGU Series

202408284

・GSAの4G-5G FWA調査

4G-5G FWA Survey 2024

・QualcommがSequansの4G IoTを買収

Qualcomm and Sequans Reach Agreement on Sale of 4G IoT Technology

 

・Ouluの6G FlagshipがAI-RAN Allianceに参加

6G Flagship Announces It Has Joined the AI-RAN Alliance

2024年8月27日 (火)

LTSpice(電子回路シミュレータ)でローレンツ方程式を解く。

この記事を見た。

Circuits of Chaos: Building Lorenz, Chua, and Rossler Strange Attractors

Chuaについては前にやったことがあるが、Lorenz方程式も乗算器があれば計算できるのか、ということでやってみた。

アナデバのサイトのAD633のモデルを使うとうまく動かなかったのでこちらのサイトのものを使わせてもらった。

https://www.chaotic-circuits.com/10-creating-lorenz-butterfly/

この回路で

Ltspicelorenz01

計算すると、、、

Ltspicelorenz02

本当だ!ちゃんとローレンツ方程式が計算できている。アナログコンピュータも面白いな。

 

2024年8月26日 (月)

高周波エンジニアのためのAI・機械学習入門(9)教師あり学習でバンドパスフィルタ(BPF)の中心周波数ずれのG/NG判定をPythonとKeras 3.0を使って畳み込みニューラルネットワーク(CNN)で行う。精度が99%を超えるようになった。

前回はディープラーニング(DNN)でG/NG判定をやってみた。精度が97%台といまひとつだった。

高周波エンジニアのためのAI・機械学習入門(8)教師あり学習でバンドパスフィルタ(BPF)の中心周波数ずれのG/NG判定をPythonとKeras 3.0を使ってディープラーニング(DNN)で行う 

今回は畳み込みニューラルネットワーク(CNN)を使おう。

こういうバンドパスフィルタ(BPF)で10%だけ周波数ずれ不良が起きている状態でG/NG判定の精度を見てみる。

 

コードはこんな感じで


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("G_NG.npz")
data = data_label["data"].reshape(-1,200,5,1)
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でCNNを設定
inputs = keras.Input(shape=(200, 5, 1))
x = keras.layers.Conv2D(64, kernel_size=(10, 2), activation="relu")(inputs)
x = keras.layers.Conv2D(64, kernel_size=(10, 4), activation="relu")(x)
x = keras.layers.Flatten()(x)
outputs = keras.layers.Dense(1, activation="sigmoid")(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=keras.optimizers.Adam(), loss=keras.losses.BinaryCrossentropy(),    
            metrics=[keras.metrics.BinaryAccuracy(),])
batch_size = 32
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}")

結果はこちら。

G_ngcnn01

99.4%くらいまでいってる。これなら予備的な判定としては使えるかもしれない。

ここまでは教師あり学習だったが、次は教師なし学習をやってみよう。

2024年8月25日 (日)

神戸・湊川神社でお参り。夜には夏祭りやってるようで屋台が出てました。

JR神戸駅からすぐです。

20240825-143230

あれ?これって前からあった?と思ったら

20240825-143237 20240825-143244 20240825-143322

どうやら夜は夏祭りがあるらしい。

昼間で屋台はまだやってなかったけれどたくさん出ていた。夜は賑やかだろう。

20240825-143413

2024年8月24日 (土)

映画「ラストマイル」を観てきた。面白かった!最後の爆弾の伏線に痺れた。タイトル回収シーンやミスリーディングを誘う展開、巨大なロジスティクスセンター、リアルな爆発。アンナチュラル、MIU404メンバーも重要な役割。特捜最前線のある話を思い出すシーンも。

公開初日に観てきました。面白かった!

20240823-145411

まさか最初の方に出てきた中心人物でない人の話が最後の伏線だったとは…ここ痺れた。

あるシーンは特捜最前線のこれを思い出した。

https://tv.apple.com/jp/episode/%E5%BE%A9%E8%AE%90-%E6%82%AA%E9%AD%94%E3%81%8C%E3%81%8F%E3%82%8C%E3%81%9F%E3%83%90%E3%83%AA%E3%82%B3%E3%83%B3%E7%88%86%E5%BC%BE/umc.cmc.72sl67yaas3dapiqd1dz5emyr

爆発のシーンが非常にリアルで怖く、そして犯人をミスリーディングさせる展開。

満島ひかりさん演じるエキセントリックなエレナも岡田将生くんの孔もやる気がなさそうで実は…という感じでよかった。

そしてタイトル回収シーン、意外な人が言っていてこれもよかった。

アンナチュラル、MIU404メンバーも出番は多くはないが重要な役割を担っていてドラマのファンはうれしい。

お勧めです。あとネタバレかもしれないがこれも。

2024年8月23日 (金)

高周波エンジニアのためのAI・機械学習入門(8)教師あり学習でバンドパスフィルタ(BPF)の中心周波数ずれのG/NG判定をPythonとKeras 3.0を使ってディープラーニング(DNN)で行う。

前回のフィルタの種類の分類は簡単すぎるのか精度100%になって面白くない。

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

そこでもうちょっと微妙な例としてバンドパスフィルタ(BPF)の中心周波数が微妙にずれてNGになることが判定できるかをやってみる。

10000個データとってもこんな感じで微妙なずれだが、90%が良品、10%が不良品のようなデータになっている。

G_ngdnn01

入力はこのSパラメータで、出力はGが1、NGが0の二値になっている。

DNNのコードはこんな感じで、今までと違うのはロスがbinary crossentropyになっている。


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("G_NG.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層+ドロップアウト層(今回使わず)を3層にしたDNNを設定
hidden_dim = 200
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(1, activation="sigmoid")(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=keras.optimizers.Adam(), loss=keras.losses.BinaryCrossentropy(),    
            metrics=[keras.metrics.BinaryAccuracy(),])
batch_size = 32
epochs = 100

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

結果はこちら。97%強の精度。まあまあだがこれでは実際には使えないなあ。次はCNNで改善できないか見てみる。

G_ngdnn02

2024年8月22日 (木)

高周波・RFニュース 2024年8月22日 Samsung Galaxy RingをiFixitが分解、ネットアナのキャリブレーションの本が出版へ、ワカ製作所の1㎜同軸コネクタ、ロームのSOPパッケージAC-DCコントローラIC

・Samsung Galaxy RingをiFixitが分解
202408221

Samsung’s Galaxy Ring Revealed

・ネットアナのキャリブレーションの本が出版へ

202408222

Principles and Applications of Vector Network Analyzer Calibration Techniques

 

・ワカ製作所の1㎜同軸コネクタ

WAKA Manufacturing Co., LTD Introduces New Coaxial Adapter

202408223

・ロームのSOPパッケージAC-DCコントローラIC

202408223

産機電源に最適なSOPパッケージ汎用AC-DCコントローラIC4種を発売
高精度な低電圧誤動作防止機能を搭載し、Si-MOSFETからIGBT、SiC MOSFETまでの幅広い
パワートランジスタ対応製品をラインアップ

202408224

・ルネサスのセンサモジュール

家庭や学校、公共施設でのスマートな空気質モニタリングを実現する超小型センサモジュール RRH62000 を発売

 

2024年8月21日 (水)

高周波・RFニュース 2024年8月21日 QualcommがSnapdragon 7s Gen 3発表、iFixitのPimax Crystal Light分解、TDKのカットオフ20GHz以上の薄膜コモンモードチョークフィルタ、Bosch、Infineon、NXPの合弁会社ESMCがドレスデンに工場建設開始

・QualcommがSnapdragon 7s Gen 3発表
202408211

Snapdragon 7s Gen 3 Brings Remarkable AI Experiences to More Affordable Smartphones

 

・iFixitのPimax Crystal Light分解
202408212

The Pimax Crystal Light Brings Hope of Repairable VR

 

・TDKのカットオフ20GHz以上の薄膜コモンモードチョークフィルタ

202408213

EMC対策製品: 高速差動伝送用小型薄膜コモンモードフィルタの開発と量産

・Bosch、Infineon、NXPの合弁会社ESMCがドレスデンに工場建設開始

202408214

ESMC Breaks Ground on Dresden Fab

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

先日データを作ったので
高周波エンジニアのためのAI・機械学習入門(6)教師あり学習で分類をするためのデータ作成として、Pythonとscikit-rfで作ったLCフィルタ合成ライブラリfiltersynthを使ってモンテカルロシミュレーションでLPF、BPF、HPFをたくさん作ってSパラ入力、出力OneHot表現で分類を行う。

Filterclassification02_20240819164701

今回は実際に分類をしてみる。

データ読み込みとモデルは以下の通り。


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("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層+ドロップアウト層(今回使わず)を3層にした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"),])

ここで回帰と違うのは、最終層がsoftmaxになっていることと、損失関数がCategorical Cross Entropyになっていること。

これは分類ではおなじみ。

これで学習させると、


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

え?Accuracy1.0なの?

Filterclassification03

最初の予想はDNNは全結合で周波数特性が見えないからHPFとLPF間違うんじゃないかなと思っていたが違っていた。

人間が一目でわかるようなものはAIでも簡単にわかるということなのかな。

もうちょっと難しい題材でやってみよう。

2024年8月20日 (火)

高周波・RFニュース 2024年8月20日 Qualcomm Aware Platformが肉サプライヤの追跡に採用、AMDがZT Systemsを買収、NVIDIAの生成AI竜巻予測StormCast、FortifyのRF 3DプリンタがNASAに導入、Motorola Edge50分解、iFixitは無線より有線イヤホン推し

・Qualcomm Aware Platformが肉サプライヤの追跡に採用
202408201

When every minute counts: How ZIN Corporation transformed a meat supplier’s delivery operations with real-time tracking

 

・AMDがZT Systemsを買収

AMD to Significantly Expand Data Center AI Systems Capabilities with Acquisition of Hyperscale Solutions Provider ZT Systems

・NVIDIAの生成AI竜巻予測StormCast

202408204

AI Chases the Storm: New NVIDIA Research Boosts Weather Prediction, Climate Simulation

・FortifyのRF 3DプリンタがNASAに導入

202408202

Fortify Delivers Flux One 3D Printer to NASA's Glenn Research Center-Revolutionizing Research by Unlocking Design and Material Freedom

・Motorola Edge50分解

202408203

 

・iFixitが無線より有線イヤホンの方がいいと言っている。

Why Wires Beat Wireless Every Time

2024年8月19日 (月)

高周波エンジニアのためのAI・機械学習入門(6)教師あり学習で分類をするためのデータ作成として、Pythonとscikit-rfで作ったLCフィルタ合成ライブラリfiltersynthを使ってモンテカルロシミュレーションでLPF、BPF、HPFをたくさん作ってSパラ入力、出力OneHot表現で分類を行う。

これまでは数値データを推測する回帰をやってきた。今回は分類をやってみよう。

前に作ったLCフィルタ合成ライブラリfiltersynthを使って、ローパスフィルタ(LPF)、バンドパスフィルタ(BPF)、ハイパスフィルタ(HPF)をモンテカルロシミュレーションでランダムに作って、それが教師あり機械学習で分類できるか見てみる。

データを作るコードはこちら。入力データはSパラメータだが、周波数, S11実部、S11虚部、S21実部、S21虚部で周波数点(200点)分、

出力はLPF, BPF、HPFのOneHot表現とする。


import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
import filtersynth as fs

#周波数の設定
fstart = 0.1
fstop = 20
points = 200

#モンテカルロシミュレーションでは中心周波数(BPF)/カットオフ周波数(LPF&HPF)と比帯域幅(BPFのみ)を乱数で振るが、それの最大最小
f0min = 2
f0max = 18
dfrmax = 0.2
dfrmin = 0.1

#フィルタデータ1つ分作る関数
def filters_data(n, f0, df, fstart, fstop, points, type):
    """
    Kerasで読めるような形でLPF,BPF,HPFの2ポートSパラメータとその種類のOneHot表現を
    1つ分のdata, labelとして出力する。具体的にはdataは(1, points, 5), labelは(1, 3)。
    dataが5なのは奇数次のLCフィルタはS11=S22、S21=S12かつ複素数データなので
    freq, S11real, S11imag, S21real, S21imagだから。Sパラメータは絶対値1なので規格化はせず
    周波数のみ最大周波数で割っている。
    """
    label = np.zeros((1, 3))
    if type == 0:
        LC_elements = fs.LC_LPF(n, f0)
        lpf_cir, lpf_network = fs.LPF_synthesis(n, f0, fstart, fstop, points)
        freq = lpf_network.f
        Spara = lpf_network.s
        label[0, 0] = 1
    elif type ==1:
        LC_elements = fs.LC_BPF(n, f0, df)
        bpf_cir, bpf_network = fs.BPF_synthesis(n, f0, df, fstart, fstop, points)
        freq = bpf_network.f
        Spara = bpf_network.s
        label[0, 1] = 1
    else:
        LC_elements = fs.LC_HPF(n, f0)
        hpf_cir, hpf_network = fs.HPF_synthesis(n, f0, fstart, fstop, points)
        freq = hpf_network.f
        Spara = hpf_network.s
        label[0, 2] = 1

    data = np.array([freq[:]/fstop*1E-9,Spara[:,0, 0].real, Spara[:,0, 0].imag,
                     Spara[:,1, 0].real, Spara[:,1, 0].imag]).T.reshape(1, Spara.shape[0],5)
    return data, label


#モンテカルロシミュレーションでデータ作成して保存する。
N = 10000
rng = np.random.default_rng(1)
data = np.empty((0, points, 5))
label = np.empty((0, 3))
for i in range(N):
    f0 = f0min + (f0max - f0min) * rng.random()
    df = (dfrmin + (dfrmax - dfrmin) * rng.random()) * f0
    type = rng.integers(0, 3)
    x, y = filters_data(3, f0, df, fstart, fstop, points, type)
    data = np.vstack((data, x))
    label = np.vstack((label, y))

#保存
np.savez_compressed("filter_classification.npz", data=data, label=label)

 

これを使ってLPF、BPF、HPFを一個ずつ抜き出すと、

Filterclassification01

こんな感じになって人間なら一目瞭然に分類できる。

これで10000個のデータを作った。

Filterclassification02

次回は、これをPythonとKeras 3.0で分類できるか見てみる。

 

2024年8月18日 (日)

密室偏愛時代の殺人 閉ざされた村と八つのトリックを読んだ。密室殺人のトリックがわからないと無罪になるシリーズ3作目だが、今まで一番えぐい殺され方ぞろい…そして最後に大トリックが。さらに動機が恐ろしすぎる。

このシリーズを読むのも3作目。だんだんトリックの数が増えているのが面白い。

20240815-183407

アマゾンリンク:https://amzn.to/4cpYBuP

あらすじは

巨大な鍾乳洞内部につくられた、白い直方体の建物が並ぶ奇妙な集落・八つ箱村。
祭りの最中に作家一族の娘が頭を撃ち抜かれ、村を出ようとした青年の体が突然発火し焼死体となったのを端緒とし、連続密室殺人事件の幕が切って落とされた。
事件の背後にはかつて村で死んだ昭和密室八傑の呪いが!?
山奥で遭難しかけ、たまたま村を訪れていた高校生の葛白香澄らが、次々と現れる密室の謎に挑む!

というもの。とにかくえぐい殺され方の連発で、発火と首が切れているやつ、足首切られているやつなど想像するだけで恐ろしい。

しかも最後に大トリックが待ち構えている。鍾乳洞内部、白い直方体の建物、というのがこのための設定だったとは!

で犯人の動機が恐ろしすぎる…殺され方より恐ろしいかもしれない。このシリーズ読んでいきます。

 

2024年8月17日 (土)

映画「フォールガイ」を観てきた。めちゃくちゃ面白い。痛そうなアクションの連発の中に隙あらばギャグを盛り込んでくる。メメントとあるドラマの主題歌がかかるシーンで笑うし、KISSの曲が効果的。最後の戦いは燃えるが、できた劇中映画は「え?その人?」

公開日に観てきました。ライアン・ゴズリングの作品は外れがないなあ。めちゃくちゃ面白かった。

20240816-110208

とにかく痛そうなアクション連続で、エンドクレジットで見るとやはり本当にスタントマンがやっていたようだ。

おそらくCGはワイヤを消すとか軽くしか使ってなさそう。

曲はKISSのこの曲が効果的に使われていた。それ以外にも懐かしい曲がたくさん。テイラースウィフトとクリスティーナアギレラの曲はギャグ(最初のは違うか)に使われていた。

フィルコリンズのこれも。

 

とにかくそのアクションと曲の間に隙あらばギャグを盛り込んでくるのが面白い。

あんまりいうとネタバレになるので、まあポストイット、ユニコーン、分割画面なんかには笑った。

一番笑ったのはマイアミバイスの曲が流れたとき。

あと

・カワサキをバイクと訳していた。

・回転寿司はスシ・トレイン

そしてギャグが多い中で最後からシリアスになっていき、本当の敵との戦い+仲間との共闘には燃えた。

で劇中映画「メタルストーム」が完成して(コミコンで発表)見たら…え!その人に!

とにかく面白いです。お勧め。

2024年8月16日 (金)

高周波・RFニュース 2024年8月16日 JTOWERがNTTドコモとAGCのガラスアンテナを採用、PerasoがWi-Fi 8に向けたミリ波技術を準備中、Vishayの広い面積のPINフォトダイオード、Nokiaの量子セキュリティ解説、IDTechExのメタマテリアル市場予測

・JTOWERがNTTドコモとAGCのガラスアンテナを採用

202408161

JTOWER、新宿三丁目イーストビルにてインフラシェアリングによる5G電波環境整備を実施 ~AGCが開発する5G対応「窓を基地局化するガラスアンテナ」国内初となるインフラシェアリングでの活用に向けた運用を開始~ 

・PerasoがWi-Fi 8に向けたミリ波技術を準備中

Peraso Announces Plans to Commence Development of Custom IP and mmWave Wireless Technologies for Wi-Fi 8 and Future IEEE Standards

・Vishayの広い面積のPINフォトダイオード

202408162

New Vishay Intertechnology Silicon PIN Photodiode Improves Sensitivity in Biomedical Applications

・Nokiaの量子セキュリティ解説

Quantum security’s world cup just concluded with four winners left standing

・GSAのスペクトラムオークションレポート

Spectrum Auctions July 2024

・IDTechExのメタマテリアル市場予測

202408163

The Radio-Frequency & Optical Metamaterials Market Projected to Reach USD $15 Billion by 2034

 

科学2024年8月号 量子力学100年の展開を買ってきた。錚々たる執筆陣がバラエティに富んだ話題のお話を書かれていて面白かった。量子重力はラスボス(大栗さん)、光格子時計は卵パック(香取さん)、そしてフォン・ノイマンはすごすぎる(河東さん、田崎さん)

これはすごい執筆陣だな。

20240815-183328

アマゾンリンク:https://amzn.to/3MbykFK

内容と一言感想。

[宇宙]
量子と重力の統一──基本法則探究のラスボス……大栗博司

量子重力をラスボスと呼ばれているのがなるほどなと思った。またご自身の仕事など最新の話題も興味深い。スワンプランドというのはきいたことはあったがそういう意味なのかと知った。


宇宙は究極の量子コンピューター?……高柳匡

AdS/CFT対応の重要性がわかりやすく書かれていた。またエンタングルメント・エントロピーについて初めて聞いた。


[次の時代へ]
光格子時計──量子のエンジニアリングでできた相対論的センサを使う時代へ……香取秀俊

これは前々からすごい技術と思っていた。卵パックに例えられていたのが面白い。確かに。そしてさらに精度が進むと個人ごとに時間が相対的効果で違うかもしれなくなると。すごいなその世界。


量子情報科学ビフォー・アフター……中村泰信

ボソニック符号化方式というのは初めて知った。いろいろ考えられているなあ。


電子波のトポロジーからデバイスへ……村上修一

トポロジカル金属というのもあるのか。知らなかった。

[理論の扉]
フォン・ノイマンからトポロジカル物性へ……河東泰之

著名な数学者の河東さんの記事。フォン・ノイマンすごすぎ。


熱・統計力学に導かれ量子論に至り,量子論をもとに熱・統計力学を理解する……田崎晴明

田崎さんらしい長いタイトルと興味深い内容。そしてフォン・ノイマンがやはりすごすぎ。

[変わる世界観]
ド・ブロイからエンタングルメント実験までの100年──奇跡の世紀と今後の量子力学……井元信之

ウランではディラック方程式を使って計算するとは。エンタングルメントはシュレーディンガーが命名していたが、英語名とドイツ名で意味が違うというのも知らなかった。


量子力学的世界観──その不思議な性質と検証の歩み……上田正仁

量子文脈依存というのも初めて知った。

 

2024年8月15日 (木)

高周波・RFニュース 2024年8月15日 Microwave Journalの特集はフランスの半導体や量子コンピュータへのマイクロ波技術の重要性、AtisのNext G Allianceの新ホワイトペーパーSpectrum Access Mechanisms、3GPPの6Gユースケースワークショップ、NordicのWLCSPパッケージ WiFi IC

・Microwave Journalの今月号

https://www.microwavejournal.com/publications/1

以下の2つ、フランスの半導体や量子コンピュータへのマイクロ波技術の重要性がためになった。

Chips and Pommes Frites: A French Semiconductor Success Story

202408151

Quantum Microwave Engineering: Key Skills for Every Quantum Hardware Engineer

202408152

・AtisのNext G Allianceの新ホワイトペーパーSpectrum Access Mechanisms
202408153

Spectrum Access Mechanisms

・3GPPの6Gユースケースワークショップ

WG SA1 6G Use Case Workshop

・Pixel 9の衛星通信はSkylo

 Skylo supports NTN emergency connectivity on Google Pixel 9

・NordicのWLCSPパッケージ WiFi IC

202408154

Nordic Semiconductor introduces CSP version of nRF7002 Wi-Fi 6 Companion IC

2024年8月14日 (水)

高周波・RFニュース 2024年8月14日 AkoustisがXBAWフィルタ受注、DupontがナノワイヤのC3Nano買収完了、iFixitのFramework 13分解動画、Infineonの車載Bluetooth IC、Keysightの6Gスペクトラムホワイトペーパー、USとスウェーデン、KTとLGが6Gで協力

・AkoustisがXBAWフィルタ受注

Akoustis Receives an Additional Purchase Order for $13 Million XBAW® Filters from Existing Tier-1 Customer

・DupontがナノワイヤのC3Nano買収完了

DuPont Acquires Nanowire Technology and Business Assets from C3Nano Inc.

202508141

iFixitのFramework 13分解動画

Framework 13: How Many Times Can You Upgrade One Framework?

202508142

・Infineonの車載Bluetooth IC

Infineon expands its Bluetooth® portfolio with eight new parts, including the AIROC™ CYW89829 Bluetooth LE MCU for automotive applications

202508144

・Keysightの6Gスペクトラムホワイトペーパー

202508143

Exploring the 6G Spectrum Landscape

・USとスウェーデンが6Gで協力

US and Sweden team to get a handle on 6G

・KTとLGが6Gで協力

KT and LG Electronics partner on 6G transmission, full-duplex research

 

2024年8月13日 (火)

高周波・RFニュース 2024年8月13日 Qualcommと富士通のMassive MIMO, OpenRAN無線ユニット、AMDがSilo AIの買収完了、ヴァージニアダイオードのCOOが語る今後のミリ波・テラヘルツ、Wi-Fi7解説、Lava Blaze X 5G分解

・Qualcommと富士通のMassive MIMO, OpenRAN無線ユニット

202408131

Accelerating open and virtualized networks: How Fujitsu enhances scalability, energy efficiency and performance for mobile network operators

・TSMCと富士通のReRAM比較

202408132

TSMC vs. Fujitsu: A Brief Comparison of 22ULL Embedded ReRAM Technologies

・AMDがSilo AIの買収完了

AMD Completes Acquisition of Silo AI to Accelerate Development and Deployment of AI Models on AMD Hardware

・Infineonの4kWまでのパワーモジュール

202408133

Infineon presents high-performance CIPOS™ Maxi Intelligent Power Modules for industrial motor drives of up to 4 kW

・ヴァージニアダイオードのCOOが語る今後のミリ波・テラヘルツ

Bold Predictions with Gerhard Schoenthal, Virginia Diodes

・Wi-Fi 7解説

What is Wi-Fi 7 and Why Does It Matter?

・Lava Blaze X 5G分解

https://www.youtube.com/watch?v=KpRKL1KwBkc

202408134

2024年8月12日 (月)

高周波エンジニアのためのAI・機械学習入門(5)PythonとKeras3.0を使ってこれまでとは逆に3次のLCバンドパスフィルタ(BPF)のL,Cの素子の値6個から200個×4個のSパラメータ周波数特性(S11,S21)をディープラーニング(DNN)で推定する。Functional APIで複数出力できる。

さて、これまではSパラメータの値を与えてLCバンドパスフィルタのL,Cの素子の値を推定することをしてきた。

高周波エンジニアのためのAI・機械学習入門(2)PythonとKeras3.0を使ってディープラーニング(DNN)で3次のLCバンドパスフィルタ(BPF)のSパラメータの値から素子の値(L、C)を推定する。 

高周波エンジニアのためのAI・機械学習入門(3)PythonとKeras3.0を使って畳み込みニューラルネットワーク(CNN)で3次のLCバンドパスフィルタ(BPF)のSパラメータを画像と見なして素子の値(L、C)を推定する。

高周波エンジニアのためのAI・機械学習入門(4)PythonとKeras3.0を使って回帰型ニューラルネットワーク(RNN)の一種LSTM(長・短期記憶)で3次のLCバンドパスフィルタ(BPF)のSパラメータを時系列データと見なして素子の値(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()

Dnnspara6

学習はこんな感じで。

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くらいか…あまりよくないように見えるが、

Dnnspara5

いくつか波形をプロットすると

Dnnspara2 Dnnspara4 Dnnspara1 Dnnspara3

波形の特徴は結構つかんでるな。6つのパラメータだけからこれが推定できるのはまずまずではなかろうか。

2024年8月11日 (日)

なか卯でまぐろ山かけ丼をいただく。錦糸卵がいい感じで美味しい。

まぐろユッケ丼もあったが、さっぱりしたかったので山かけの方で。

すき家と違ってフリスビーじゃない!(あれはあれでいいけど)

錦糸卵もあってこれが美味しい。

20240714-184316

2024年8月10日 (土)

「インサイド・ヘッド2」を観てきた。評判通り泣ける話…どんな悪い記憶もいい記憶も感情も自分を形成している要素という。あとエンドクレジットでシンパイの声が多部未華子さんだったのに驚く。よかった。3D格闘キャラとかホッケーのシーンの躍動感なんかもすごい。

評判がとてもいいのでどんなもの?とみてきた。これはよかった。

20240808-132436

あんまりネタバレになるようなことは書かないですが、いい記憶やいい感情だけ持っていてもその人の個性にはならないという。

悪い記憶や嫌だったり複雑な感情が自分を形成しているという泣ける話でした。

CGは非常に良くて、ライリーのニキビとか芸が細かいな、とか3D格闘キャラをわざわざカクカクにしていたり、アイスホッケーのシーンが非常に迫力あったり。

で今回の新キャラ、シンパイですが予備知識全くなく観に行ったのでこの声優さんうまいなー、とか思っていたらエンドクレジットで多部未華子さんだとわかった。びっくり。こんな器用だったのか。

もうヒットしていると思いますがお勧めです。ただいつものことながら日本語フォントだけはなんとかしてほしい。

2024年8月 9日 (金)

高周波・RFニュース 2024年8月9日 Microwave & RFの最新号はRFアンプ、ED2の5G 28GHz向けフェイズドアレイモジュール、Knowlesのミリ波フィルタホワイトペーパー、AkoustisのCEOが交代、OnePlus Nord4分解

・Microwave & RFの最新号はRF Amp

https://www.mwrf.com/members/magazine-digital-archive/document/55131772/microwaves-rf-digital-edition-july-august-2024-download

202408091

・ED2の5G 28GHz向けフェイズドアレイモジュール

202408092

ED2 Introduces 28 GHz Phased Array Module for 5G Antenna Systems and Beamsteering Application

・Knowlesのミリ波フィルタホワイトペーパー

202408093

Implementing High-Performance Filters in MMwave Applications

・AkoustisのCEOが交代

Akoustis Announces Leadership Transition

・OnePlus Nord4分解

https://www.youtube.com/watch?v=9sTnxywWW28

202408094

高周波エンジニアのためのAI・機械学習入門(4)PythonとKeras3.0を使って回帰型ニューラルネットワーク(RNN)の一種LSTM(長・短期記憶)で3次のLCバンドパスフィルタ(BPF)のSパラメータを時系列データと見なして素子の値(L、C)を推定する。

前回、前々回はDNNCNNでフィルタの素子の値を推定した。

今回は時系列予測に使われる回帰型ニューラルネットワーク(RNN、Reccurent Neural Networks)のうち、LSTMというものを使ってみる。

時系列予測

周波数特性は時系列のように順番に並んでいるので精度があがるんじゃないかな?という予想のもとにやってみた。

モデルはこんな感じで2層のLSTM。LayerNormarizationを入れるといいと聞くが今回試したものでは余計悪くなった。


# Functional APIでRNNを設定
inputs = keras.Input(shape=(200, 5))
x = keras.layers.LSTM(100, return_sequences=True)(inputs)
x = keras.layers.LSTM(100)(x)
outputs = keras.layers.Dense(6)(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
model.summary()

Rfrnn1

これを


batch_size = 32
epochs = 300

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

のように学習させる。R2は0.991といいが、

これを横軸推定値、縦軸が実際の値として図示するとこうなる。

Rfrnn2

あれ?なんか系統的にずれてるのがあるぞ?うーん理由がいまいちわからん…

とりあえず今回、DNN、CNN、RNNを試したが時間と精度的にはDNNがよかった。

まあハイパーパラメータの選定が適当過ぎるからかもしれないが…

この件はここでいったん終わって、次は逆パターン、つまりL,Cの値を与えてSパラメータそのものの波形が推定できるかをやってみよう(続く)。

2024年8月 8日 (木)

高周波・RFニュース 2024年8月8日 IEEE Microwave MagazineでFMCWレーダの逓倍方式とアップコンバートの比較やリコンフィギュラブルRF、Samsung Galaxy Buds3分解、TelitのIoTモジュール、Vishayの14Aまでのパワーインダクタ

・IEEE Microwave Magazine 2024年9月号

https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668

今月はBreadth of MTTということで幅広い話題が掲載。このFMCWレーダについては私も昔やっていたので興味深い。

Close-In Dynamic Range Considerations in Upconverted and Frequency-Multiplied Frequency-Modulated Continuous-Wave Radars at Ku-Band: Close-In Dynamic Range Considerations in FMCW Radars

202408081

このリコンフィギュラブルRFもやってた。

Design Techniques for Passive Planar Reconfigurable RF Circuits: Reconfigurable RF Circuits

202408082

 

・iFixitのSamsung Galaxy Buds3分解

https://www.youtube.com/watch?v=ah-a7bghOB8

202408083

・TelitのIoTモジュール

Telit Cinterion Enables Next-Generation Cellular LPWA Deployments on AT&T with the ME310M1 IoT Module

・Vishayの14Aまでのパワーインダクタ

Vishay Intertechnology Shielded IFDC and Semi-Shielded IFSC Series Ferrite Inductors Now Available in 2020DE, 3232DB, and 5050HZ Case Sizes

202408084

高周波エンジニアのためのAI・機械学習入門(3)PythonとKeras3.0を使って畳み込みニューラルネットワーク(CNN)で3次のLCバンドパスフィルタ(BPF)のSパラメータを画像と見なして素子の値(L、C)を推定する。

前回はDNNを使って素子の値を推定した。

高周波エンジニアのためのAI・機械学習入門(2)PythonとKeras3.0を使ってディープラーニング(DNN)で3次のLCバンドパスフィルタ(BPF)のSパラメータの値から素子の値(L、C)を推定する。 

今回は畳み込みニューラルネットワーク(CNN=Convolutional Newral Network)を使ってみよう。

畳み込みニューラルネットワーク (Convolutional Neural Networks)

これは画像でよく使われる方式で、例えば2次元の場合は画像の縦・横サイズに加えて色情報があるようなデータ形式になっている。

今回のSパラメータの形式は

正規化した周波数、S11実部、S11虚部、S21実部、S21虚部

のような形で(データ数、200、5)のような形式なので、ダミーの次元を1つ付け加えて画像のように扱う。reshapeしている部分がそれに相当する。


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"].reshape(-1,200,5,1)
label = data_label["label"]
x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.3, random_state=0)

CNNのモデルは以下の通り。


# Functional APIでCNNを設定
inputs = keras.Input(shape=(200, 5, 1))
x = keras.layers.Conv2D(64, kernel_size=(10, 2), activation="relu")(inputs)
x = keras.layers.Conv2D(64, kernel_size=(10, 4), activation="relu")(x)
x = keras.layers.Flatten()(x)
outputs = keras.layers.Dense(6)(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
model.summary()

Rfcnn1

 

これでfitして学習させると


batch_size = 32
epochs = 300

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

R2は0.9955で、推定値と正解をプロットした結果はこうなった。

Rfcnn2

うーん、DNNよりちょっと良くなったけど数倍時間掛かってるしな。とりあえず次はRNN(回帰型ニューラルネットワーク)を試してみよう。

 

2024年8月 7日 (水)

高周波・RFニュース 2024年8月7日 ロームと東京農工大のテラヘルツメタレンズ、5G Americasのニューラルホストについての新しいホワイトペーパー、Samsungが薄型LPDDR5X量産、Intel 18Aの進捗、Huaweiの5.5G、Siversのフォトニクス部門がbyNordicと統合など

・ロームと東京農工大のテラヘルツメタレンズ

202408071

独自材料の平面レンズをテラヘルツ発振器に搭載し、鋭い指向性のテラヘルツ円偏波を発生 -6G通信、センサ機器、イメージングなどへの応用に期待-

・5G Americasのニューラルホストについての新しいホワイトペーパー

202408074

5G Americas Explores the Evolving Landscape of Neutral Host Networks

・TechInsightsのチップレットウェビナー

Chiplets and Advanced Packaging: Moving the Industry Forward

・Samsungが薄型LPDDR5X量産

202408072

Samsung Electronics Begins Mass Production of Industry’s Thinnest LPDDR5X DRAM Packages for On-Device AI

・TIの超小型DLPコントローラ

Smallest-ever TI DLP® display controller enables 4K UHD projectors for epic displays anywhere

・Intel 18Aの進捗

202408073

Kevin O’Buckley Talks Progress on Intel 18A

・NXPの楕円曲線暗号をサポートする決済カード

NXP Delivers Customization for Payment Cards with JCOP Pay

・Nokiaのドローンを使った在庫管理

Nokia AIMS boosts warehouse efficiency with industry-first, true automated inventory counting capability

・Huaweiの5.5G

China Unicom Beijing and Huawei Build Ultra-Large-Scale Commercial 5.5G Network

・Siversのフォトニクス部門がbyNordicと統合

Semiconductors Enters into Letter of Intent With byNordic Acquisition Corporation for Business Combination of Sivers’ Photonics Subsidiary

 

2024年8月 6日 (火)

高周波エンジニアのためのAI・機械学習入門(2)PythonとKeras3.0を使ってディープラーニング(DNN)で3次のLCバンドパスフィルタ(BPF)のSパラメータの値から素子の値(L、C)を推定する。 

機械学習に使われるフレームワークはいろいろあるが、最近Keras3.0になってマルチバックエンドになってTensorFlow, JAX, PyTorchが後で動いて、全く同じ書き方で3つが使えるようになった。

Keras 3.0になってマルチバックエンド(TensorFlow,jax, PyTorch)が使えるようになったので速度を比較してみる(1) MNIST(手書き数字認識)でPythonコード書いてDNNでやってみる。TensorFlowが一番速く、jax, PyTorchの順(CPUのみ使用の場合)。ちょっと意外。 

Keras 3.0になってマルチバックエンド(TensorFlow,jax, PyTorch)が使えるようになったので速度を比較してみる(2) MNIST(手書き数字認識)でPythonでCNN(畳み込みニューラルネットワーク)でやってみる。TensorFlowが一番速く、PyTorch, JAXの順(CPUのみ使用の場合)。

Keras 3.0になってマルチバックエンド(TensorFlow,JAX, PyTorch)が使えるようになったので速度を比較してみる(3) MNIST(手書き数字認識)でPythonでRNN(再帰型ニューラルネットワーク)のBidirectional LSTMを試す。やっぱりTensorFlowが一番速く、JAX、PyTorchの順。

とにかくKerasは使うのが易しく、機械学習の非専門家にはうってつけ、ということでKerasを使う。バックエンドはTensorFlowにしているがお好みで別のものでもOK。

データは先日作ったこちらを使う。

 高周波エンジニアのためのAI・機械学習入門(1) 準備としてPythonとscikit-rfを使って学習データとして大量のLCバンドパスフィルタ(BPF)のSパラメータデータとその回路素子の値をモンテカルロシミュレーションで作る。

復習すると、入力は3次のバンドパスフィルタのSパラメータ(正規化した周波数、S11実部、S11虚部、S21実部、S21虚部)で、出力はL,C素子の値6つ。並べ方がKerasで読めるようにそれぞれ(データ数,200, 5) (データ数,6)

のような形になっている。まずはデータを読み込んで訓練データとテストデータに分ける。今回は訓練データ7:テストデータ3の割合。


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(data, label, test_size=0.3, random_state=0)

次にモデルを作る。KerasだとSequentialモデルというのが簡単だが、

Sequential モデル

後々出力が複数あるような例題をやろうとおもうのでFunctional APIというのを使う。

Functional API のガイド

最初に試すのはいわゆるディープラーニングと呼ばれるDNN(Deep Neural Networks)。

はじめてのニューラルネットワーク:分類問題の初歩

今回のモデルは以下の通り。DNNは全結合層(Dense)を複数重ねていくのが、そのユニット数(隠れ次元)は100で3層重ねている。

ただ入力が全部結合するので順番に意味がなくなる。そこでもともと200,5だったデータを1次元に落とすFlattenというものを最初に使っている。これを最初見たとき、せっかく周波数ごとに並んでいるのに情報消してる…と思ったが、そういう情報も使うアルゴリズムもあるので後々試していく。

活性化関数はReLU(最後の層だけは回帰なのでlinear)、ロス関数は回帰で使うには平均二乗誤差、オプティマイザーはAdamというのはたぶん何見ても書いてあるので略。


# Functional APIでDense層を3層にしたDNNを設定
hidden_dim = 100
inputs = keras.Input(shape=(200, 5))
x = keras.layers.Flatten()(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(6)(x)

# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())

Kerasが便利なのはmodel.summary()とすると層の情報を出力してくれること。Flatten後に200,5が1000になっていることも分かる。

Rfai003

ここから学習を始める。model.fitで簡単にできるのもkerasのいいところ。とりあえずエポック(学習回数)は300で。


batch_size = 32
epochs = 300

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

結果がこちら。R2は0.995もある。誤差は素子によって1%を切るものから数%まで。まあまあじゃなかろうか。

tf.Tensor(0.99566436, shape=(), dtype=float32)
[0.35018807 8.82631366 5.86103927 0.40482717 0.35743293 5.65281861]

これを横軸推定値、縦軸が実際の値として図示するとこうなる。シリーズのC、シャントのLが精度いまいちだが、これはフィッティングの場合も難しいのでまあ仕方がない。何も考えずDNNしただけとしては非常に精度がいいんではなかろうか。

Rfai004

図示するコードはこんな感じで。


row, column = 2, 3
legend = ["L1", "C1", "L2", "C2", "L3", "C3"]
fig, ax = plt.subplots(2, 3, figsize=(15,9))
for i in range(row):
    for j in range(column):
        count = column * i + j
        maxvalue = y_pred[:, count].max()
        ax[i,j].scatter(y_pred[:, count], y_test[:,count], c="r", s=5)
        ax[i,j].plot([0,maxvalue], [0,maxvalue], "--", c="black")
        ax[i,j].set_xlabel("推定した値", fontname='MS Gothic')
        ax[i,j].set_ylabel("実際の値", fontname='MS Gothic')
        ax[i,j].set_xlim(0, maxvalue)
        ax[i,j].set_ylim(0, maxvalue)
        ax[i,j].grid()
        ax[i,j].legend([legend[count] + f" 平均誤差{error.mean(axis=0)[count]:.2f}%"], prop={"family":"MS Gothic"})
         
fig.tight_layout()
plt.show()

ユニット数やエポック、層数を変えてもあんまり変わらなかった。これくらいがこの方法の限度かな。

今回はここまで。次回はCNN(畳み込みニューラルネットワーク)の予定(続く)。

2024年8月 5日 (月)

高周波エンジニアのためのAI・機械学習入門(1) 準備としてPythonとscikit-rfを使って学習データとして大量のLCバンドパスフィルタ(BPF)のSパラメータデータとその回路素子の値をモンテカルロシミュレーションで作る。

いろいろな分野でAIが使われているのは言うまでもないが、物理で使われている例が興味深いと思った。

ディープラーニングと物理学 原理がわかる、応用ができる

物理学者,機械学習を使う ー機械学習・深層学習の物理学への応用ー

―Pythonで実践― 基礎からの物理学とディープラーニング入門 (エンジニア入門シリーズ112)

数学セミナー2024年8月号 通巻754号【特集】生成AIとこれからの数学

高周波領域で使われているかというと、最近の測定器やシミュレータ、CADには使われだしているが、普通に高周波だけやってきたエンジニアにはまだまだなじみがない。そこで今回から高周波エンジニアのためのAI・機械学習入門を何回かに分けて書いていく。

生成AIや、画像認識などはもう情報があふれているし、もうちょっと実践的な例題を取り上げる。ということで、以前に作ったフィルタ合成ライブラリ↓

 Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成ライブラリ filtersynthを作った。任意の次数のバタワースとチェビシェフタイプのLPF, BPF, HPFを合成して回路定数のリストやSパラメータにして出力できる。

を使ってBPFのSパラメータとその回路定数(L,C)をモンテカルロシミュレーションを使って出力して、Sパラメータを入力データとし、L,Cの素子の値が機械学習で推定できるか、いわゆる回帰問題をやってみよう。

フィッティングと何が違うの?と言われるとまあそうなんだが、とりあえず機械学習入門ということで。

プログラムはこんな感じで。


import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
import filtersynth as fs

#周波数の設定
fstart = 0.1
fstop = 20
points = 200

#モンテカルロシミュレーションでは中心周波数と比帯域幅を乱数で振るが、それの最大最小
f0min = 2
f0max = 18
dfrmax = 0.2
dfrmin = 0.1

#フィルタデータ1つ分作る関数
def filter_data(n, f0, df, fstart, fstop, points):
    """
    Kerasで読めるような形でBPFの2ポートSパラメータとその合成に使うL,Cの値をそれぞれ
    1つ分のdata, labelとして出力する。具体的にはdataは(1, points, 5), labelは(1, 6)。
    dataが5なのは奇数次のLCフィルタはS11=S22、S21=S12かつ複素数データなので
    freq, S11real, S11imag, S21real, S21imagだから。Sパラメータは絶対値1なので規格化はせず
    周波数のみ最大周波数で割っている。
    """
    LC_elements = fs.LC_BPF(n, f0, df)
    label = LC_elements.reshape(n*2+4)[2:2*n+2].reshape(1, n*2)
    bpf_cir, bpf_network = fs.BPF_synthesis(n, f0, df, fstart, fstop, points)
    freq = bpf_network.f
    Spara = bpf_network.s
    data = np.array([freq[:]/fstop*1E-9,Spara[:,0, 0].real, Spara[:,0, 0].imag,
                     Spara[:,1, 0].real, Spara[:,1, 0].imag]).T.reshape(1, Spara.shape[0],5)
    return data, label


#モンテカルロシミュレーションでデータ作成して保存する。
N = 10000
np.random.seed(1)
data = np.empty((0, points, 5))
label = np.empty((0, 6))
for i in range(N):
    f0 = f0min + (f0max - f0min) * np.random.rand()
    df = (dfrmin + (dfrmax - dfrmin) * np.random.rand()) * f0
    x, y = filter_data(3, f0, df, fstart, fstop, points)
    data = np.vstack((data, x))
    label = np.vstack((label, y))
#予測する量(L,C)が小さすぎるのでnH, pF単位にする。
label[:, 0] *= 1.0E9
label[:, 1] *= 1.0E12
label[:, 2] *= 1.0E9
label[:, 3] *= 1.0E12
label[:, 4] *= 1.0E9
label[:, 5] *= 1.0E12
#保存
np.savez_compressed("data_label.npz", data=data, label=label)

 

フィルタは3次のチェビシェフフィルタで、その中心周波数と帯域幅を乱数で振っている。周波数は0.1~20GHzの200点。

この場合のSパラメータはポート1とポート2で対称になるので、データとしては周波数、S11の実部、S11の虚部、S21の実部、S21の虚部の5つになるが、機械学習で使うためには並べ方をデータ数を一番最初に持ってきて

[データ数, 200, 5]

のようにしないといけない。ここが最初慣れないところ。一個のフィルタのデータは[1, 200, 5]のように作成して、numpyのvstackで積んでいっている。

なお、200,5の部分も機械学習のアルゴリズム(ディープラーニング、畳み込みニューラルネットワーク、回帰型ニューラルネットワークなど)によって後ほど並べかえる。

またLCの値は、今回は3次バンドパスフィルタなのでL3つ、C3つの合計6で、これもデータ数が最初に来て

[データ数, 6]

のようになっている。

今回は10000個のデータを作成した。最初の1000個のS21を重ねて書いたものがこちら。

Rfai002

中心周波数や帯域幅がいろいろになっていることがわかる。

次回からこのSパラメータを与えて回路定数が推定できるかを見ていく(続く)。

高周波・RFニュース 2024年8月5日 iFixitのSamsugn Galaxy Watch 7 Ultra分解、Samsungの1TBのmicroSDカード、O-RAN allianceの仕様がATIS標準に、Mini-circuitsの750W 915MHz帯信号源、LCPを使ったメタサーフェスアブソーバー

①iFixitのSamsugn Galaxy Watch 7 Ultra分解

Exynos W1000が搭載されている。

202408051

 

②Samsungの1TBのmicroSDカード

202408052

https://news.samsung.com/global/samsung-electronics-launches-enhanced-1tb-microsd-cards-with-improved-performance-and-higher-capacity

③O-RAN allianceの仕様がATIS標準に

ATIS, O-RAN ALLIANCE Agree on Transposition of O-RAN Specifications to ATIS Standards

④Mini-circuitsの750W 915MHz帯信号源

202408053

Mini-Circuits Introduces Turnkey 750 W Signal Source for 915 MHz RF Energy Applications

⑤LCPを使ったメタサーフェスアブソーバー

202408054

Thin Film Resonant Metasurface Absorbers Using Patch-Based Arrays on Liquid Crystal Polymer Substrates for Centimeter-Wave Applications

2024年8月 4日 (日)

カレーハウス スパイシーで夏野菜カレー(大辛)をいただく。

カレー屋さんではココイチよりスパイシー派の私。今回は限定メニューの夏野菜カレーで。

オクラが大好き。

20240730-132822

2024年8月 3日 (土)

三体III死神永生(文庫版上下)を一気に読む。I,IIに負けず面白い!前作で休戦したはずの三体世界の恐ろしい企み、智子に制御されるアンドロイド智子、階梯計画、二代目の執剣者、カモフラージュされた3つの物語、掩体計画、光速宇宙船そして高次元・低次元と全く飽きさせない。

I,IIがめちゃくちゃ面白かったのでもちろんIIIも読んだ。

アマゾンリンク: 

20240730-181929

あらすじは、「圧倒的な技術力を持つ異星文明・三体世界の太陽系侵略に対抗すべく立案された地球文明の切り札「面壁計画」。その背後で、極秘の仰天プランが進んでいた。侵略艦隊の懐に、人類のスパイをひとり送る――奇想天外なこの「階梯計画」を実現に導いたのは、若き航空宇宙エンジニアの程心(チェン・シン)。計画の鍵を握るのは、学生時代、彼女の友人だった孤独な男・雲天明(ユン・ティエンミン)。この二人の関係が人類文明の――いや、宇宙全体の――運命を動かすとは、まだ誰も知らなかった……。
一方、三体文明が太陽系に送り込んだ極微スーパーコンピュータ・智子(ソフォン)は、たえず人類の監視を続けていた。面壁者・羅輯(ルオ・ジー)の秘策により三体文明の地球侵略が抑止されたあとも、智子は女性型ロボットに姿を変え、二つの世界の橋渡し的な存在となっていたが……。
帰還命令にそむいて逃亡した地球連邦艦隊の宇宙戦艦〈藍色空間〉は、それを追う新造艦の〈万有引力〉とともに太陽系から離脱。茫漠たる宇宙空間で、高次元空間の名残りとおぼしき“四次元のかけら"に遭遇する。〈万有引力〉に乗り組む宇宙論研究者の関一帆は、その体験から、この宇宙の“巨大で暗い秘密"を看破する……。 一方、程心(チェン・シン)は、雲天明(ユン・ティエンミン)にプレゼントされた星から巨額の資産を得ることに。補佐役に志願した艾AA(アイ・エイエイ)のすすめで設立した新会社は、数年のうちに宇宙建設業界の巨大企業に成長。人工冬眠から目覚めた程心は、羅輯(ルオ・ジー)にかわる二代目の執剣者(ソードホルダー)に選出される。それは、地球文明と三体文明、二つの世界の命運をその手に握る立場だった……。」

今回の主人公は二代目の執剣者、程心。前作で休戦したはずで地球の文化にも興味を持っていた三体世界の恐ろしい企てに巻き込まれる。

その程心に星をプレゼントする雲天明が気の毒でならなかった。しかし驚きの結果に。3つの物語に隠されたものも想像を超えていた。

そして智子の豹変ぶりにその絵を想像すると逆に笑える。

曲率推進ドライヴや次元兵器、マイクロブラックホールなどSF的要素も満載。最後は壮大なお話になって、語り部が誰だったのかそこでわかる。

とにかく読んでない方はI,II,III読んだ方がいいです。

2024年8月 2日 (金)

Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成ライブラリ filtersynthを作った。任意の次数のバタワースとチェビシェフタイプのLPF, BPF, HPFを合成して回路定数のリストやSパラメータにして出力できる。

さてこれまで3回でフィルタ合成用の関数を作ってきた。

Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成をする(1)プロトタイプLPF(チェビシェフ、バタワース)の素子の値を計算する関数をMatthai, Young & JonesのMicrowave Filters, Impedance-matching networks, and coupling structureを基に作る。

Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成をする(2) Circuit機能を使ってL,CをつなげていってLPF(ローパスフィルタ)を合成してSパラメータを得る。チェビシェフとバタワースを比較したり素子の繋がりを図示したり。

Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成をする(3) プロトタイプLPFから BPF(バンドパスフィルタ)を設計・合成してチェビシェフとバタワースを比べる。

ここにHPFも加えてモジュール化しよう。

このリンクからダウンロードできる。

ダウンロード - filtersynth.py

使い方はこのファイルを同じディレクトリ、あるいはパスが通っているところに置いて、

import filtersynthとする。

全コードは長いので関数の説明のみ書くと

def prototype_LPF(n, type = "Chebyshev", ripple = 0.1):
    """
    信号源、負荷のインピーダンス1、カットオフ周波数1のプロトタイプLPFの素子の値をndarrayで返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    """
def LC_LPF(n, fc, z0 = 50.0, first_element = "series", type = "Chebyshev", ripple = 0.1):
    """
    信号源、負荷の特性インピーダンスZo、カットオフ周波数fcのLPFのL,C素子の値をndarrayで返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    fc : カットオフ周波数[GHz]
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    """
def LC_BPF(n, f0, df, z0 = 50.0, first_element = "series", type = "Chebyshev", ripple = 0.1):
    """
    信号源、負荷の特性インピーダンスZo、中心周波数f0, 帯域幅dfのBPFのL,C素子の値をndarrayで返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    f0 : 中心周波数[GHz]
    df : 帯域幅[GHz]
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLCが来る場合"series", 最初にシャントのLCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    """
def LC_HPF(n, fc, z0 = 50.0, first_element = "series", type = "Chebyshev", ripple = 0.1):
    """
    信号源、負荷の特性インピーダンスZo、カットオフ周波数fcのHPFのL,C素子の値をndarrayで返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    fc : カットオフ周波数[GHz]
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    """
def LPF_synthesis(n, fc, fstart, fstop, points,
                  z0=50.0, first_element="series", type = "Chebyshev", ripple = 0.1, name="LPF"):
    """
    LPFを合成し、scikit-rfのCircuitとNetworkとして返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    fc : カットオフ周波数[GHz]
    fstart : 開始周波数[GHz]
    fstop : 終了周波数[GHz]
    points : 周波数点数
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    name : networkの名前
    """
def BPF_synthesis(n, f0, df, fstart, fstop, points, z0=50.0,
                  first_element="series", type = "Chebyshev", ripple = 0.1, name = "BPF"):
    """
    BPFを合成し、scikit-rfのCircuitとNetworkとして返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    f0 : 中心周波数[GHz]
    df : 帯域幅[GHz]
    fstart : 開始周波数[GHz]
    fstop : 終了周波数[GHz]
    points : 周波数点数
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    name : networkの名前
    """
def HPF_synthesis(n, fc, fstart, fstop, points, z0=50.0,
                  first_element="series", type = "Chebyshev", ripple = 0.1, name = "HPF"):
    """
    HPFを合成し、scikit-rfのCircuitとNetworkして返す関数
    n : フィルタの次数(チェビシェフの場合、偶数だと負荷のインピーダンスが50Ωになりません)
    fc : カットオフ周波数[GHz]
    fstart : 開始周波数[GHz]
    fstop : 終了周波数[GHz]
    points : 周波数点数
    z0 : 信号源の特性インピーダンス
    first_element : 最初にシリーズのLが来る場合"series", 最初にシャントのCが来る場合"shunt"
    type : チェビシェフの場合"Chebyshev", バタワースの場合 "Butterworth"
    ripple : チェビシェフの場合のリップルの大きさをdBで表したもの
    name : networkの名前
    """
という7つの関数が使える。

使い方は、例えばLPF、BPF、HPFを合成してグラフにするには

import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
import filtersynth as fs

bpf_cir, bpf_network = fs.BPF_synthesis(3, 5, 0.2*10, 0.1, 20, 200)
lpf_cir, lpf_network = fs.LPF_synthesis(3, 5, 0.1, 20, 200)
hpf_cir, hpf_network = fs.HPF_synthesis(3, 5, 0.1, 20, 200)
bpf_network.plot_s_db(m=1, n=0, logx=True)
lpf_network.plot_s_db(m=1, n=0, logx=True)
hpf_network.plot_s_db(m=1, n=0, logx=True)
plt.ylabel("S21[dB]")
plt.ylim(-50 ,5)
とすると、このようなグラフが得られる。
Filtersynth01
素子のつながりを見るには以下のようにする。
bpf_cir.plot_graph(network_labels=True, edge_labels=True, port_labels=True)
Filtersynth02
さて、なぜこのようなライブラリを作ったかというと、AI・機械学習のための前段階だったのだ。
そのシリーズは来週あたりから(続く)

高周波・RFニュース 2024年8月2日 mmTronが5G FWA向けミリ波パワーアンプを受注、Qualcommの6Gにおけるセンシングウェビナー、Yoleのスマホ向けプロセッサの調査レポート、Silicon LabsのZigbee SOCがスマートアダプタに採用、パナソニックのWi-Fi/Bluetoothコンボモジュール

①mmTronが5G FWA向けミリ波パワーアンプを受注

Production Order for mmWave Power Amplifiers for 5G FWA

②Qualcommの6Gにおけるセンシングウェビナー

https://content.rcrwireless.com/20240829-qualcomm-whats-the-role-of-sensing-for-next-generation-wireless-networks?hs_preview=YyJOHpGo-174400654751

202408021

③Qualcomm CEOが語る自動車・スマホ向けAI

Qualcomm bullish on automotive, AI on smartphones

④Yoleのスマホ向けプロセッサの調査レポート

Surveying the Landscape of Smartphone Processors

202408022

⑤Silicon LabsのZigbee SOCがスマートアダプタに採用

Silicon Labs Enables SONOFF Micro Zigbee USB Smart Adaptor to Elevate Smart Home Connectivity

202408023

⑥パナソニックのWi-Fi/Bluetoothコンボモジュール

Panasonic Introduces Wi-Fi/Bluetooth Combo Module for IoT and Industrial Applications

202408024

2024年8月 1日 (木)

高周波・RFニュース 2024年8月1日 Qualcommの決算発表、Qorvoがバドワイザーの倉庫管理をUWBで効率化、Infineonのモーター制御・電力変換用の新しいPSOC、RohmのVCSELフォトリフレクタ、iFixitのマイクロソルダリング解説

①Qualcommの決算発表

Qualcomm Announces Third Quarter Fiscal 2024 Results

202408011

収益: 94億ドル
GAAP EPS: 1.88ドル、非GAAP EPS: 2.33ドル

—EBTが前年比20%以上増加—
—QCT Automotive:売上高が前年比87%増加—

②Qorvoがバドワイザーの倉庫管理をUWBで効率化

Warehouse Logistics Challenges? UWB Says, "Hold My Beer"

202408013

③Infineonのモーター制御・電力変換用の新しいPSOC

Infineon PSOC™ Control MCU family targets motor control and power conversion in industrial and consumer applications

202408012

④RohmのVCSELフォトリフレクタ

超小型VCSEL*フォトリフレクタで広がる可能性

202408014

⑤iFixitのマイクロソルダリング解説

Microsoldering Beginner’s Guide: It’s Easier Than You Think

生成AI(Mistral Large 2, ChatGPT (4o), Gemini 1.5 Pro, Claude 3.5 Sonnet)にLCフィルタ(5次のチェビシェフ型バンドパスフィルタ(BPF))を設計してもらった。Mistral, Claude,ChatGPTは惜しいところまでは行くがLPFと違ってダメだった…Mistralが一番まし。Geminiは全然ダメ。

前回、LPFを設計してもらうといい結果が出るものは多かったので今回はBPF(バンドパスフィルタ)。

 生成AI(Mistral Large 2, ChatGPT (4o), Gemini 1.5 Pro, Claude 3.5 Sonnet)にLCフィルタ(5次のチェビシェフ型ローパスフィルタ(LPF))を設計してもらった。最近Pythonとscikit-rfで設計ツールを作ったので。MistralとClaudeは完璧、ChatGPTは惜しい…Geminiは最後まで答えず…

ChatGPT:方向性はあっているが計算が、、、

Bpfchatgpt

Mistral Large2:これも方向性はあっているが計算が違う…

Bpfmistral

Claude 3.5 Sonnet。これも同じだな。同じ文献を学習しているのかな。

Bpfclaude

出てきた定数でフィルタ作るとこうなった。一応、バンドパスフィルタの形状をしているのはMistralだけ。

Bpfai

Geminiは最初から拒否していた。

Bpfgemini

« 2024年7月 | トップページ | 2024年9月 »

最近の記事

2025年2月
            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  

最近のコメント

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