我有這個問題要解決:
def phi(x):
# DO NOTHING ON THIS FUNCTION
if x<=0:
return -1.0
else:
return 1.0
phi = np.vectorize(phi)
這是我需要實作該功能的地方:
def predictOne(x, w):
z =
return phi(z)
但是當我嘗試使用我的公式但使用我的輸入代碼時:
def predictOne(x, w):
z = 0 x * w
return phi(z)
并運行我的斷言:
assert predictOne(np.array([0.0,0.0]) , np.array([0.1,3.2,7.4])) == 1.0
assert predictOne(np.array([0.0,0.0]), np.array([-0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,-0.7]), np.array([0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,0.7]), np.array([0.1,3.2,7.4])) == 1.0
我得到一個(運算元無法與形狀(2,)(3,)一起廣播
顯然,斷言是正確的,所以我在我的 predictOne 函式中做錯了。任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
問題在于公式:
def predictOne(x, w):
z = w[0] np.sum(x * w[1:])
return phi(z)
w[0]是偏見。正如@mkrieger 所指出的,零偏差沒有多大意義。- 感知器本質上是計算輸入的加權總和,因此應該將結果相加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/388157.html
上一篇:從給定陣列回傳多維陣列
下一篇:查找網格捕獲的“水”量
