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の一文でできる。ローレンツ方程式を例としてやってみる。 »
「パソコン・インターネット」カテゴリの記事
- 出遅れましたがFizzBuzzをExcelのMAP,LAMBDA,SEQUENCE,IFS関数を使って一行(というかただの1セル入力)で作る。(2023.09.24)
- iOS17の新機能、Object CaptureをアプリHyper Captureで試す。ゴッホのスヌーピーとフェルメールの牛乳を注ぐミッフィーを3D スキャンでぐるぐる回す。3回角度変えてキャプチャが必要だった。プロセスはiPhone 12 Pro Maxなんで時間掛かるけどかなり綺麗に。(2023.09.21)
- 離散リアプノフ方程式 AXAᴴ - X + Q = 0がクロネッカー積とvecで計算できることを思い出した!(Vec Trickというそう)。Pythonのscipy.linalg.solve_discrete_lyapunovとnumpy.kronの両方で計算してちゃんと合うことを確認。(2023.09.22)
- Google検索の生成AI,SGEが使えるようになっていた。じゃあということでRIS(Reconfigurable Intelligent Surface)について聞いてみた。ChatGPT, BingのAIチャット、Bardと比較。ZTEが先日発表していたので聞いたが、SGEはその話にも触れた。詳しいのはChatGPTだった。(2023.09.02)
- PythonのmatplotlibにXKCD(棒人間の理系コミック、ホワット・イフのランドール・マンローさん作)の手書き風グラフが描ける機能があった!せっかくなのでルンゲクッタ法のDormand Prince8次(DOP853)でローレンツ方程式を描く。(2023.09.01)
「学問・資格」カテゴリの記事
- 浜村渚の計算ノート 10さつめ ラ・ラ・ラ・ラマヌジャンを読んだ。九章算術、ベクトル、四元数、電卓、そしてラマヌジャン!タクシー数も1+2+3+…=-1/12もいろんな公式も出てきます。カプレカー数も。高精度計算サイトkeisan.casio.jpにUPしているものとも関連していてよかった。(2023.09.26)
- 出遅れましたがFizzBuzzをExcelのMAP,LAMBDA,SEQUENCE,IFS関数を使って一行(というかただの1セル入力)で作る。(2023.09.24)
- (速報続報)iPhone15 Proが早くも分解。USモデルなのでミリ波アンテナ3つが見えてる。USモデルとその他でMLBの形から違う!(USはeSIM、他はSIMカード)、なのでスペースがなくて他モデルはミリ波アンテナ部分に部品乗せてる!(2023.09.23)
- 離散リアプノフ方程式 AXAᴴ - X + Q = 0がクロネッカー積とvecで計算できることを思い出した!(Vec Trickというそう)。Pythonのscipy.linalg.solve_discrete_lyapunovとnumpy.kronの両方で計算してちゃんと合うことを確認。(2023.09.22)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2023年9月19日 Microwave Magazineの特集はRFIDや氷を検出する話、Microwave Journalで車載アンテナ評価でRanLOSというのを初めて知る、Gapwavesの多層導波管、PythonのRFライブラリScikit-RFに高木分解を使うTUG multiline TRLが。(2023.09.19)
「日記・コラム・つぶやき」カテゴリの記事
- 浜村渚の計算ノート 10さつめ ラ・ラ・ラ・ラマヌジャンを読んだ。九章算術、ベクトル、四元数、電卓、そしてラマヌジャン!タクシー数も1+2+3+…=-1/12もいろんな公式も出てきます。カプレカー数も。高精度計算サイトkeisan.casio.jpにUPしているものとも関連していてよかった。(2023.09.26)
- 出遅れましたがFizzBuzzをExcelのMAP,LAMBDA,SEQUENCE,IFS関数を使って一行(というかただの1セル入力)で作る。(2023.09.24)
- (速報続報)iPhone15 Proが早くも分解。USモデルなのでミリ波アンテナ3つが見えてる。USモデルとその他でMLBの形から違う!(USはeSIM、他はSIMカード)、なのでスペースがなくて他モデルはミリ波アンテナ部分に部品乗せてる!(2023.09.23)
- iOS17の新機能、Object CaptureをアプリHyper Captureで試す。ゴッホのスヌーピーとフェルメールの牛乳を注ぐミッフィーを3D スキャンでぐるぐる回す。3回角度変えてキャプチャが必要だった。プロセスはiPhone 12 Pro Maxなんで時間掛かるけどかなり綺麗に。(2023.09.21)
- 離散リアプノフ方程式 AXAᴴ - X + Q = 0がクロネッカー積とvecで計算できることを思い出した!(Vec Trickというそう)。Pythonのscipy.linalg.solve_discrete_lyapunovとnumpy.kronの両方で計算してちゃんと合うことを確認。(2023.09.22)
« 松屋で富士山豆腐の本格麻婆盛合せ牛バラ焼定食【肉小盛】(ご飯特盛)をいただく。 | トップページ | Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(5)常微分方程式の数値解法、4段4次のルンゲクッタ法がRungeKutta.FourthOrderの一文でできる。ローレンツ方程式を例としてやってみる。 »
コメント