亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Numpy dot 返回不同的值

Numpy dot 返回不同的值

牛魔王的故事 2022-10-25 14:59:15
Numpy dot 在標準化后返回不同的值。我有兩個函數應該返回相同的值。import numpy as npfrom sklearn.preprocessing import normalizedef foo1(x, y):    with np.errstate(invalid='ignore'):        x_norm = np.nan_to_num(x / (np.linalg.norm(x, axis=0)))    z = np.dot(x_norm, y / np.linalg.norm(y))    print(z)def foo2(x, y):    x_norm = normalize(x, axis=0)    z = np.dot(x_norm, normalize(y))    print(z)最小的可重現示例x = np.array([[1, 2, 3],              [4, 5, 6]])y = np.array([[1], [2], [3]])foo1(x, y)foo2(x, y)輸出[[0.62190562] [1.47271032]][[1.0611399 ] [2.79304638]]預期的第一個值。
查看完整描述

1 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

y因此,您的問題是由3x1 矩陣這一事實引起的。當您調用normalize時,它會在第二個軸 ( axis=1) 上進行歸一化,它會分別對每個值進行歸一化。所以

normalize(y) -> array([[1.], [1.], [1.]])

當你想要的時候

normalize(y, axis=0) -> array([[0.26726124], [0.53452248], [0.80178373]])

進行此更改,您的兩個函數都將返回相同的值[[0.62190562] [1.47271032]]


查看完整回答
反對 回復 2022-10-25
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號