就总数据而言,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函数
python 来自https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html#numpy.reshape的numpy