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の一文でできる。ローレンツ方程式を例としてやってみる。 »
「パソコン・インターネット」カテゴリの記事
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 家で使うPCをゲーミングノートPC、ASUS TUF Gaming A16に買い替えた。CPUはAMD Ryzen 9 8940HX、メモリ32GB、GPUはNVIDIA GeForce RTX 5060 Laptop GPU、SSD 1TB。ゲームをしたいわけでなくてNVIDIAの最新GPUで機械学習・数値計算やろうかと。(2025.11.13)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/3-2025/11/9(2025.11.09)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年11月17日 Microwave Journalの特集は5G/6G/IoT, Special Focusも5G/6G、IDTechExの低損失材料レポート、6GHz帯の世界政策とWi-Fi 8についてのウェビナー開催、iFixitがPixel BUds 2aを分解、OnePlus15分解動画など(2025.11.17)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 高周波・RFニュース 2025年11月13日 QorvoがTWTA置き換えの広帯域SSPA発表、iFixitがiPad Pro M5分解、KYOCERA AVXが0.9Vで動く超小型クロック発表、Mini-Circuitsが様々なBALUNやトランス解説、軍用5G解説、imecの110GHz可能な300mm GeSiウェハー(2025.11.13)
- 高周波・RFニュース 2025年11月12日 Qualcommが語る技術の標準化、STMicroelectronicsが語るシリコンフォトニクス、HuaweiがイノベーションとIPフォーラム開催、6G SummitでFCCのコミッショナーが米国が6Gをリードすべしと語る(2025.11.12)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年11月17日 Microwave Journalの特集は5G/6G/IoT, Special Focusも5G/6G、IDTechExの低損失材料レポート、6GHz帯の世界政策とWi-Fi 8についてのウェビナー開催、iFixitがPixel BUds 2aを分解、OnePlus15分解動画など(2025.11.17)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 高周波・RFニュース 2025年11月13日 QorvoがTWTA置き換えの広帯域SSPA発表、iFixitがiPad Pro M5分解、KYOCERA AVXが0.9Vで動く超小型クロック発表、Mini-Circuitsが様々なBALUNやトランス解説、軍用5G解説、imecの110GHz可能な300mm GeSiウェハー(2025.11.13)
- 高周波・RFニュース 2025年11月12日 Qualcommが語る技術の標準化、STMicroelectronicsが語るシリコンフォトニクス、HuaweiがイノベーションとIPフォーラム開催、6G SummitでFCCのコミッショナーが米国が6Gをリードすべしと語る(2025.11.12)
« 松屋で富士山豆腐の本格麻婆盛合せ牛バラ焼定食【肉小盛】(ご飯特盛)をいただく。 | トップページ | Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(5)常微分方程式の数値解法、4段4次のルンゲクッタ法がRungeKutta.FourthOrderの一文でできる。ローレンツ方程式を例としてやってみる。 »




コメント