python - 为权重和偏差生成随机向量和矩阵
问题描述
我试图根据传感器 x1 和 x2 了解火灾的可能性。
y=1
为此,我正在尝试为权重和偏差生成随机向量和矩阵,但出现错误。
import numpy as np
np.random.seed(seed=123)
w1 = np.random.rand(4,2)
b1 = 4*1
x = np.array([0.4, 0.32])
z1 = np.dot(w1,x) + b1
a1 = 1 / (1+np.exp(-z1))
np.random.seed(seed=123)
w2 = np.random.rand(1,4)
b2 = 1*1
z2 = np.dot(w2,x) + b2
a2 = 1 /(1+np.exp(-z2))
但我收到以下错误:
----> 1 z2 = np.dot(w2,x) + b2
2 a2 = np.tanh(Z1)
3 print(a2)
ValueError: shapes (2,4) and (2,) not aligned: 4 (dim 1) != 2 (dim 0)
我无法弄清楚如何解决这个问题。
解决方案
答案就在错误中 - 您正在尝试将矩阵相乘w2
和x
,它们有无效的要相乘的维度。
矩阵w2
有 1 行 4 列:
>>> w2 = np.random.rand(1,4)
>>> w2.shape
(1, 4)
矩阵x
有 2 个条目:
>>> x = np.array([0.4, 0.32])
>>> x.shape
(2,)
因此,您不能将这些矩阵相乘 - 只有当且仅当第一个矩阵中的列数 ,w2
等于第二个矩阵中的行数时,矩阵才能相乘x
。在这里,正如错误所说,4 (dim 1) != 2 (dim 0)
.
您可以通过给出x
四行或w2
两列来解决此问题。
希望这可以帮助。
推荐阅读
- filesystems - 快速插入和拔出 USB 时 GetVolumeInformationW 卡住
- python - TypeError:无效的类型提升
- javascript - 将 connect-redux-shorthand 符号转换为 JS/TypeScript
- angular - 验证具有默认值的文本框
- reactjs - React Formik + 是的,onChange 触摸领域
- javascript - 如何从 NodeJs 启动和停止 Electron 应用程序
- google-drive-api - 在 Google Drive API 中使用 createdTime 属性调用 Agument 列表文件 API
- jquery - 无法在 javascript 中访问 Jquery 3.3.1 升级后的隐藏字段值
- vba - 使用另一个范围变量设置范围变量
- ios - 斯威夫特:可解码