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

Posted

技术标签:

【中文标题】就总数据而言,Numpy.Reshape() 在输入向量处理中做了啥【英文标题】:What does Numpy.Reshape() do in Input Vector Processing In Terms of Total Data就总数据而言,Numpy.Reshape() 在输入向量处理中做了什么 【发布时间】:2018-06-17 13:48:51 【问题描述】:

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

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

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

而且他试图让 LSTM 模型来学习《爱丽丝梦游仙境》的全文

在示例代码中,我不太明白的是:

# 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()

我的意思是,我知道正如他在教程帖子中所说,它会将整个 dataX 列表元素重新缩放为 0-1 比例,但我很好奇的是,对于 dataX 进行了哪些操作以使其在数学上如此。

就是这样。

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

【问题讨论】:

抱歉,这不是论坛。 docs.scipy.org/doc/numpy-1.13.0/reference/generated/… 在交互式 Python 会话中对小数组进行重塑。确保你了解数组形状的概念, 【参考方案1】:

我们需要知道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 对这些值没有任何作用。它只是改变了数组的形状(从技术上讲,它产生了一个具有新形状的新数组,但共享原始数据)。

【讨论】:

以上是关于就总数据而言,Numpy.Reshape() 在输入向量处理中做了啥的主要内容,如果未能解决你的问题,请参考以下文章

数组:numpy.shape 与numpy.reshape函数

numpy中的reshape中参数为-1

python 来自https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html#numpy.reshape的numpy

numpy.reshape()使用方法

numpy.reshape()

numpy的ndarray数组如何reshape成固定大小