[解決済み] tf.multiply vs tf.matmul による内積の計算
2022-02-28 08:42:06
質問
形状が [3,4] の行列(ベクトル)X があり、各対のベクトル (X[1].X[1]) と (X[1].X[2]) の間の内積を計算したい...など。
コサインの類似性のコードを見ました。
tf.reduce_sum(tf.multyply(X, X),axis=1)
で、ベクトル行列のベクトル間の内積を計算します。しかし、この結果は、(X[i], X[i]) の間の内積を計算するだけです。
私はすべての2つのベクトル間の内積を計算するtf.matmul(X、X、transpose_b=True)を使用しましたが、私はまだtf.multiplyがこれをしなかった理由私は私のコードに問題があると思います混乱しています。
というコードです。
data=[[1.0,2.0,4.0,5.0],[0.0,6.0,7.0,8.0],[8.0,1.0,1.0,1.0]]
X=tf.constant(data)
matResult=tf.matmul(X, X, transpose_b=True)
multiplyResult=tf.reduce_sum(tf.multiply(X,X),axis=1)
with tf.Session() as sess:
print('matResult')
print(sess.run([matResult]))
print()
print('multiplyResult')
print(sess.run([multiplyResult]))
と出力されます。
matResult
[array([[ 46., 80., 19.],
[ 80., 149., 21.],
[ 19., 21., 67.]], dtype=float32)]
multiplyResult
[array([ 46., 149., 67.], dtype=float32)]
何かアドバイスがありましたらお願いします。
どのように解決するのですか?
tf.multiply(X, Y)
または
*
演算子は
要素ごとの乗算
というように
[[1 2] [[1 3] [[1 6]
[3 4]] . [2 1]] = [6 4]]
ところが
tf.matmul
が行います。
行列の乗算
というように
[[1 0] [[1 3] [[1 3]
[0 1]] . [2 1]] = [2 1]]
を使って
tf.matmul(X, X, transpose_b=True)
を計算することを意味します。
X . X^T
ここで
^T
は行列の転置を表し
.
は行列の乗算です。
tf.reduce_sum(_, axis=1)
は、第1軸(0から数え始める)に沿って合計を取り、これは行の合計を意味します。
tf.reduce_sum([[a, b], [c, d]], axis=1) = [a+b, c+d]
ということになります。
tf.reduce_sum(tf.multiply(X, X), axis=1) = [X[1].X[1], ..., X[n].X[n]]
ということで、各行の規範だけが必要な場合は、この方法を使用します。一方
tf.matmul(X, X, transpose_b=True) = [
[ X[1].X[1], X[1].X[2], ..., X[1].X[n] ],
[ X[2].X[1], ..., X[2].X[n] ],
...
[ X[n].X[1], ..., X[n].X[n] ]
]
ということで、すべての行のペアの間の類似性を求める場合は、これが必要です。
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python 入出力と高次代入の基礎知識
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み】__str__と__repr__の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python カメの描画コマンドとその例
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー