Python 重塑张量是否保留了原始张量的特征?

Python 重塑张量是否保留了原始张量的特征?,python,tensorflow,pytorch,reshape,tensor,Python,Tensorflow,Pytorch,Reshape,Tensor,我有一个形状为(8,5300)的张量T,其中8是批次大小,5是每个批次中的文档数,300是每个文档的编码。如果我按照下面的方式重塑张量,我的张量的性质是否保持不变 T = T.reshape(5, 300, 8) T.shape >> Size[5, 300, 8] 那么,这个新的张量是否表示与原始张量相同的性质?关于属性,我的意思是,我能说这也是一个批量大小为8的张量,每个批量有5个文档,每个文档有300维编码吗 这是否会影响模型的培训?如果张量的重塑扰乱了数据点,那么训练就没有

我有一个形状为
(8,5300)
的张量T,其中8是批次大小,5是每个批次中的文档数,300是每个文档的编码。如果我按照下面的方式重塑张量,我的张量的性质是否保持不变

T = T.reshape(5, 300, 8)
T.shape
>> Size[5, 300, 8]
那么,这个新的张量是否表示与原始张量相同的性质?关于属性,我的意思是,我能说这也是一个批量大小为8的张量,每个批量有5个文档,每个文档有300维编码吗

这是否会影响模型的培训?如果张量的重塑扰乱了数据点,那么训练就没有意义了。例如,如果像上面那样进行重塑,则输出为一批5个样本,每个样本有300个大小为8的文档。如果真是这样,那就没用了,因为我没有300个文档,也没有5个样本

我需要像这样重塑它,因为我的模型在两者之间产生形状的输出
[8,5300]
,下一层接受输入为
[5,300,8]

你需要理解和之间的区别

重塑
视图
仅更改张量的“
形状
”,而不重新排序元素。所以

orig=torch.rand((8,5300))
resh=初始整形(5300,8)
源[0,0,:]!=resh[0,:,0]
如果还想更改元素的顺序,则需要
permute
it:

perm = orig.permute(1, 2, 0)
orig[0, 0, :] == perm[0, :, 0]
不! 我犯了类似的错误。 假设您将二维张量(矩阵)转换为一维张量(数组),并对其应用变换功能。这将在代码中产生严重的问题,因为新的张量具有数组的特性。
希望你明白我的意思。

所以如果我想让我修改的张量表示一批8个样本,5个文档,每个文档代表300维文档,我需要对其进行排列,而不是对其进行正确的重塑?@MikePatel确切地说,这只会影响我重塑张量的层的参数,还是整个模型?问题是,在将其送入特定层之前,我对其进行了重塑,然后从输出中,我将其改回原始形状。我在开始训练后问了这个问题,现在,我只是检查是否得到了任何答案。不幸的是,我不得不再次训练我的模特:(