就总数据而言,Numpy.Reshape() 在输入向量处理中做了什么

What does Numpy.Reshape() do in Input Vector Processing In Terms of Total Data

我正在积极学习如何将文本信息编码为数字格式,然后通过 RNN 或 LSTM 进行学习。

https://machinelearningmastery.com/text-generation-lstm-recurrent-neural-networks-python-keras/

这家伙把LSTM的精髓删减得很好,我认为是一个很好的教程,

他正试图让 LSTM 模型学习 "Alice in Wonderland"

的整个文本

示例代码中,这里是我没看明白的地方:

# reshape X to be [samples, time steps, features]
X = numpy.reshape(dataX, (n_patterns, seq_length, 1))
# normalize
X = X / float(n_vocab)
# one hot encode the output variable
y = np_utils.to_categorical(dataY)

这里,特别是函数numpy.reshape()将dataX转换成我们想要的格式。

但我无法理解 n_patterns 只是整数 144223,它只是 dataX 的 len()

我的意思是,我知道正如他在教程 post 中所说,它将整个 dataX 列表元素重新缩放为 0-1 比例,但我好奇的是 dataX 进行了哪些数学运算.

就是这样。

感谢您的帮助,我会更加努力学习!

我们需要知道 dataX.shape 才能清楚地了解正在发生的事情。

X = numpy.reshape(dataX, (n_patterns, seq_length, 1))

len(dataX) 就是 dataX.shape[0],数组的第一个维度。

reshape的一个关键点是元素的总数不能改变。据此我推断 dataX.shape 已经是 (n_patterns, seq_length),并且 reshape 只是添加尾随大小 1 维。

这样做是为了 LSTM 代码的方便,如注释所示,[samples, time steps, features]

reshape 对值没有任何影响。它只是改变了数组的形状(从技术上讲,它会生成一个具有新形状的新数组,但共享原始数据)。