Tensorflow(Keras)のNormalizationで多次元配列の平均を取るのにaxisの定義がNumpyのmeanなどと違うのにハマる…タプルを使わないとだめなのか。
もう世の中から100周回遅れくらいだろうけれど機械学習で遊び始めた。とりあえずTensorflow(Keras)を使ってみている。
で、早速ハマったところがある(が、ググってもあまりいいのが出てこない)ので備忘録としてここに記す。
データとしては2次元配列で与えられていて、列ごとに標準化したい。検証用のデータを、
data = np.arange(24).reshape(4,3,2)
とする。4つの3x2行列があることに相当。
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15],
[16, 17]],
[[18, 19],
[20, 21],
[22, 23]]])
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15],
[16, 17]],
[[18, 19],
[20, 21],
[22, 23]]])
numpyで平均をとるのには、まずaxis設定なしなら
axis =1なら4x2行列。
np.mean(data, axis = 1)
array([[ 2., 3.],
[ 8., 9.],
[14., 15.],
[20., 21.]])
[ 8., 9.],
[14., 15.],
[20., 21.]])
axis =2またはaxis = -1なら4x3行列になる。
np.mean(data, axis = -1)
array([[ 0.5, 2.5, 4.5],
[ 6.5, 8.5, 10.5],
[12.5, 14.5, 16.5],
[18.5, 20.5, 22.5]])
[ 6.5, 8.5, 10.5],
[12.5, 14.5, 16.5],
[18.5, 20.5, 22.5]])
さて問題はここから。Tensorflow.Keras.layers.Normalizationを使うとき。
axis = Noneなら
norm1 = tf.keras.layers.Normalization(axis = None)
norm1.adapt(data)
norm1.mean
<tf.Tensor: shape=(1, 1, 1), dtype=float32, numpy=array([[[11.5]]], dtype=float32)>
なんでこれは分かる。
axis=0なら
norm2 = tf.keras.layers.Normalization(axis = 0)
norm2.adapt(data)
norm2.mean
axis=-1(デフォルト)or axis=2なら
norm4 = tf.keras.layers.Normalization(axis = -1)
norm4.adapt(data)
norm4.mean
<tf.Tensor: shape=(1, 1, 2), dtype=float32, numpy=array([[[11., 12.]]], dtype=float32)>
1x1x2になる。
じゃあどうするんだろう、、、とドキュメントをちゃんと読む。
Integer, tuple of integers, or None. The axis or axes that should have a separate mean and variance for each index in the shape. |
と書いてある。あ、タプルを受け取るのか!じゃあ、
« 松屋で富士山豆腐の本格麻婆盛合せ牛バラ焼定食【肉小盛】(ご飯特盛)をいただく。 | トップページ | Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(5)常微分方程式の数値解法、4段4次のルンゲクッタ法がRungeKutta.FourthOrderの一文でできる。ローレンツ方程式を例としてやってみる。 »
「パソコン・インターネット」カテゴリの記事
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
- MATLAB OnlineのSimulinkでローレンツ方程式をode8で計算してみる。Interface 2025年1月号でMATLAB Onlineの半年ライセンスがついてきたので。Simulinkを使うのは初めてだったが、わかりやすいSimulink入門コースを修了したのですぐできた。(2024.12.04)
- Interface2025年1月号はMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。初歩からAlexNetの転移学習、CNNまで話題が豊富で、なんとMatlab Onlineの半年ライセンスがついてくる。Simulinkや各種toolboxも使える。早速MATLAB入門オンラインコース修了した。(2024.12.03)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
« 松屋で富士山豆腐の本格麻婆盛合せ牛バラ焼定食【肉小盛】(ご飯特盛)をいただく。 | トップページ | Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(5)常微分方程式の数値解法、4段4次のルンゲクッタ法がRungeKutta.FourthOrderの一文でできる。ローレンツ方程式を例としてやってみる。 »
コメント