import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))
OUTPUT:
print(y.flatten())
[1 2 3 4 5 6 7 8 9]
print(y.ravel())
[1 2 3 4 5 6 7 8 9]
Run Code Online (Sandbox Code Playgroud)
两个函数都返回相同的列表.那么两个不同功能执行相同工作的需求是什么.
在文件中numpy.reshape,它说:
如果可能,这将是一个新的视图对象; 否则,它将是一份副本.注意,不保证返回数组的内存布局(C-或Fortran-连续).
我的问题是,numpy何时会选择返回一个新视图,何时复制整个数组?是否有任何一般原则告诉人们行为reshape,或者只是不可预测?谢谢.
如问题所述,-1在pytorch 中做什么view?
In [2]: a = torch.arange(1, 17)
In [3]: a
Out[3]:
tensor([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.,
11., 12., 13., 14., 15., 16.])
In [7]: a.view(-1,1)
Out[7]:
tensor([[ 1.],
[ 2.],
[ 3.],
[ 4.],
[ 5.],
[ 6.],
[ 7.],
[ 8.],
[ 9.],
[ 10.],
[ 11.],
[ 12.],
[ 13.],
[ 14.],
[ 15.],
[ 16.]])
In [8]: a.view(1,-1)
Out[8]:
tensor([[ 1., 2., 3., 4., 5., 6., …Run Code Online (Sandbox Code Playgroud) 阅读了几篇文章后,我仍然对从BiLSTM获取最后的隐藏状态的实现的正确性感到困惑。
最后一个来源(4)的方法对我来说似乎是最干净的方法,但是我仍然不确定我是否正确理解了线程。我是否在使用LSTM和反向LSTM中正确的最终隐藏状态?这是我的实现
# pos contains indices of words in embedding matrix
# seqlengths contains info about sequence lengths
# so for instance, if batch_size is 2 and pos=[4,6,9,3,1] and
# seqlengths contains [3,2], we have batch with samples
# of variable length [4,6,9] and [3,1]
all_in_embs = self.in_embeddings(pos)
in_emb_seqs = pack_sequence(torch.split(all_in_embs, seqlengths, dim=0))
output,lasthidden = self.rnn(in_emb_seqs)
if not self.data_processor.use_gru:
lasthidden = lasthidden[0]
# u_emb_batch has shape batch_size x embedding_dimension
# sum last state from forward …Run Code Online (Sandbox Code Playgroud)