python - 这两行代码有什么区别?机器学习阵列

标签 python arrays numpy machine-learning artificial-intelligence

所以我开始学习 ML,并且需要用 Python 进行编码。我遵循反向传播教程。因此,在其中,我遇到了将算法转变为支持矩阵乘法的问题,以便它运行得更快。以下代码来自更新偏差和权重的函数。我需要更改它,这样我就可以运行整个输入和输出矩阵,而不是一次运行每个输入输出对。小批量是一个包含 10 个元素的列表。列表中的每个元素都是两个元组,一个元组是输入,一个 784x1 大小的矩阵。另一个元组是输出,一个 10x1 大小的矩阵。我尝试将输入分组为 784x10x1 数组,然后将其转换为 784x10 数组。我通过两种方式做到了这一点,如以下代码所示:

# for clearance - batch[0] is the first tuple in the element in mini_batch, which is, as recalled, the input array.
# mini_batch[0][0] is the input array of the first element in mini_batch, which is a 784x1 array as I mentioned earlier 
inputs3 = np.array([batch[0] for batch in mini_batch]).reshape(len(mini_batch[0][0]), len(mini_batch))
inputs2 = np.array([batch[0].ravel() for batch in mini_batch]).transpose()

inputs3inputs2 都是 784x10 数组,但由于某种原因,它们不相等。我不明白为什么,所以如果有人能向我解释为什么会有差异,我将非常感激。

最佳答案

>>> A = np.array([[1,2,3],[4,5,6]])
>>> A.reshape(3,2)
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> A.transpose()
array([[1, 4],
       [2, 5],
       [3, 6]])

从这个简短的示例中您可以看到 A.transpose() != A.reshape(3,2)。

想象一个尺寸为 3x2 的空白矩阵。 A.reshape(3,2) 将从顶行开始从左到右读取 A(2x3 矩阵)中的值并将它们存储在空白矩阵中。使这些矩阵具有不同的值。

关于python - 这两行代码有什么区别?机器学习阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59696282/

相关文章:

C - 创建一个字符数组数组

c++ - 在 C++ 中将指针数组的所有元素设置为 nullptr

python pandas dataframe 乘以匹配索引或行名称的列

python - 根据第一列值将数据拆分为多个矩阵

Python - 读取复选框

c++ - 编译错误声明我的 char vector 数组

python - 两列之间的模糊匹配(Python)

Python3,数组中的列名 - numpy 或 pandas

python - 对于范围(5)中的 i 和范围(2)中的 k : TypeError: 'bool' object is not iterable

python - 每次特定列的字符串内容发生变化时从 0 重新启动索引