矩阵乘法的维度

数据挖掘 Python 麻木的
2022-02-28 05:25:56

鉴于输入的形状为 (100, 32) ,任何人都可以解释为什么以下代码会生成形状为 (32,) 而不是 (,32) 的input_t ?input_t 不应该生成具有 32 个属性/列的向量吗?

import numpy as np

timesteps = 100
input_features = 32
output_features = 64

inputs = np.random.random((timesteps, input_features))

state_t = np.zeros((output_features,))

W = np.random.random((output_features, input_features))
U = np.random.random((output_features, output_features))
b = np.random.random((output_features,))

successive_outputs = [ ]

for input_t in inputs:
    output_t = np.tanh(np.dot(W, input_t) + np.dot(U, state_t) + b)
    successive_outputs.append(output_t)
    state_t = output_t 
1个回答

将矩阵想象inputs为二维表。您有 100 行和 32 列。然后 for 循环充当迭代器,它将沿第一个维度轴返回值。该维度因此消失并返回剩余维度。当存在单一维度时,Python 中的默认值是(n,).

矩阵(100,32)遍历(32,)

矩阵(100,28,28)迭代通过(28,28)

矩阵(100,2,2,2)迭代通过(2,2,2)