为了账号安全,请及时绑定邮箱和手机立即绑定

“ValueError:matmul:输入操作数 1 的核心维度 0 不匹配...”

“ValueError:matmul:输入操作数 1 的核心维度 0 不匹配...”

杨魅力 2023-08-03 17:14:19
我刚刚开始学习 Python/NumPy。我想编写一个函数,该函数将应用具有 2 个输入和 1 个输出以及给定权重矩阵的运算,即两个形状为 (2,1) 的 NumPy 数组,并应使用 tanh 返回形状为 (1,1) 的 NumPy 数组。这是我想出的:import numpy as npdef test_neural(inputs,weights):    result=np.matmul(inputs,weights)    print(result)    z = np.tanh(result)    return (z)x = np.array([[1],[1]])y = np.array([[1],[1]])z=test_neural(x,y)print("final result:",z)但我收到以下 matmul 错误:ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 1)有人可以告诉我我缺少什么吗?
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

问题是矩阵乘法的维度。


您可以将矩阵与共享维度相乘,如下所示(在此处了解更多信息):


(M , N) * (N , K) => Result dimensions is (M, K)


你尝试乘法:


(2 , 1) * (2, 1)

但尺寸是非法的。


因此,您必须inputs在乘法之前进行转置(只需应用于.T矩阵),这样您就可以获得乘法的有效维度:


(1, 2) * (2, 1) => Result dimension is (1, 1)

代码:


import numpy as np

def test_neural(inputs,weights):

    result=np.matmul(inputs.T, weights)

    print(result)

    z = np.tanh(result)

    return (z)

x = np.array([[1],[1]])

y = np.array([[1],[1]])


z=test_neural(x,y)


# final result: [[0.96402758]]

print("final result:",z)


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信