- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
torch.Tensor
有两个实例方法可以用来扩展某维的数据的尺寸,分别是 repeat()
和 expand()
。
expand和repeat函数是pytorch中常用于进行张量数据复制和维度扩展的函数,但其工作机制差别很大,本文对这两个函数进行对比。
expand函数用于将张量中单数维的数据扩展到指定的size。
首先解释下什么叫单数维(singleton dimensions),张量在某个维度上的size为1,则称为单数维。比如zeros(2,3,4)不存在单数维,而zeros(2,1,4)在第二个维度(即维度1)上为单数维。expand函数仅仅能作用于这些单数维的维度上。
参数*sizes用于逐个指定各个维度扩展后的大小(也可以理解为拓展的次数),对于不需要或者无法(即非单数维)进行扩展的维度,对应位置可写上原始维度大小或直接写作-1。
expand函数可能导致原始张量的升维,其作用在张量前面的维度上,因此通过expand函数可将张量数据复制多份(可理解为沿着第一个batch的维度上)。
另一个值得注意的点是:expand函数并不会重新分配内存,返回结果仅仅是原始张量上的一个视图。
下面为几个简单的示例:
import torch
a = tensor([1, 0, 2])
b = a.expand(2, -1) # 第一个维度为升维,第二个维度保持原阳
# b为 tensor([[1, 0, 2], [1, 0, 2]])
a = torch.tensor([[1], [0], [2]])
b = a.expand(-1, 2) # 保持第一个维度,第二个维度只有一个元素,可扩展
# b为 tensor([[1, 1],
# [0, 0],
# [2, 2]])
import torch
a = torch.tensor([1, 0, 2])
b = torch.zeros(2, 3)
c = a.expand_as(b) # a照着b的维度大小进行拓展
# c为 tensor([[1, 0, 2],
# [1, 0, 2]])
tensor.repeat(sizes)
1
参数sizes指定了原始张量在各维度上复制的次数。整个原始张量作为一个整体进行复制,这与Numpy中的repeat函数截然不同,而更接近于tile函数的效果。
与expand不同,repeat函数会真正的复制数据并存放于内存中。
下面是一个简单的例子:
import torch
x = torch.tensor([[1, 2, 3],[1, 2, 3]])
x = torch.tensor([1, 2, 3])
print(x.size())
print(x)
y = x.repeat(2, 2)
print(y)
结果:
torch.Size([3])
tensor([1, 2, 3])
tensor([[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]])
torch.repeat_interleave(input, repeats, dim=None)
1
参数input为原始张量,repeats为指定轴上的复制次数,而dim为复制的操作轴,若取值为None则默认将所有元素进行复制,并会返回一个flatten之后一维张量。
与repeat将整个原始张量作为整体不同,repeat_interleave操作是逐元素的。
下面是一个简单的例子:
a = torch.tensor([[1], [0], [2]])
b = torch.repeat_interleave(a, repeats=3) # 结果flatten
# b为tensor([1, 1, 1, 0, 0, 0, 2, 2, 2])
c = torch.repeat_interleave(a, repeats=3, dim=1) # 沿着axis=1逐元素复制
# c为tensor([[1, 1, 1],
# [0, 0, 0],
# [2, 2, 2]])
原文链接:https://blog.csdn.net/guofei_fly/article/details/104467138
expand函数:
ok的:
import torch
x = torch.tensor([[1, 2, 3]])
print(x.size())
y = x.expand(2, 3)
print(y)
x = torch.tensor([[1, 2, 3],[1, 2, 3]])
print(x.size())
y = x.expand(2, 3)
print(y)
异常的:
import torch
x = torch.tensor([[1, 2, 3],[1, 2, 3]])
print(x.size())
y = x.expand(4, 3)
print(y)
repeat例子:
repeat的参数必须和data维度相同:
import torch
data = torch.tensor([[[1, 2, 3],[4, 5, 6],[7, 8, 9]]])
# x = torch.tensor([1, 2, 3])
print(data.size())
print(data)
y = data.repeat(2,1,1)
print(y.size())
print(y)
我有一个简单的 Card 组件,是从material-ui 的网站复制的。 我正在尝试在我的代码中实现它。当我单击 CardHeader 时,它不会展开。 这是我的组件: import React,
我已经使用延迟加载实现了一棵树。第一级节点是在树创建时创建的,其中只有当用户展开任何特定节点时才会创建子节点。 数据来自数据库,我们向数据库发出查询以填充子节点。实现了 TreeExpansionLi
假设我有 3 个向量(仅作为示例)。现在我想获取这 3 个所有可能组合的随机样本。通常,我会这样做: x <- 1:3 y <- 10:12 z <- 15:18 N <- length(x) * l
如果我使用 dabbrev-expand为了扩展,Emacs 搜索当前缓冲区,然后搜索其他具有相同模式的缓冲区。这是由 dabbrev-friend-buffer-function 处理的默认设置为
我想像这样切片主窗口 我的布局代码如下: QGridLayout *gLayout = new QGridLayout (); viewWidget->setStyleSheet("backgroun
我在 Android Studio Canary 1 上尝试 Jetpack Compose 并添加了 Column可组合到 ui。 Column有一个名为 modifier 的属性我们可以在其中传递
我正在努力让我们的 Accordion 可以使用 aria-expanded 等 aria 标签来访问。当单击 Accordion 触发器标题或按下键盘上的“返回”按钮时,我正确地更改了 aria-e
根据 http://doc.qt.io/qt-5/qsizepolicy.html#Policy-enum ,设置小部件的大小策略具有以下效果: The sizeHint() is a sensibl
我将使用Live Actitions显示实时数据,并在一个应用程序中添加对Dynamic Island的支持,该应用程序具有现有的小部件扩展。然而,我也不能把它造出来。当我收到错误信息时。和。即使我提
我有一个设置,如下所示: //With dynamic content here. 我正在运行一个脚本,该脚本将 #nav 的大小调整为浏览器窗口的高度大小。但有时我的
我正在使用jquery checkboxtree plugin它效果很好,并且上面的链接中有很好的文档和示例。我现在遇到一种情况,我想以编程方式检查节点。使用以下语法支持此操作: $('#tabs-
我正在尝试以下实验: 我有两个QpushButtons,比如PushA 和PushB。现在 PushA 在 QHBoxLayout 中,PushB 也在它自己的 QHBoxLayout 中。这两个水平
我目前有一个 OData V4 服务,它具有以下模型。 “类别”——“代码” 对于每个类别,可以有许多代码。 我需要 $expand the Codes, $filter where Active =
我的目的是创建一个带有 QVBoxLayout 的可滚动控件,上面有各种控件(比如按钮)。该控件放在 *.ui 窗体上。在该控件的构造函数中,我编写了以下代码: MyScrollArea::M
你们如何解决以下 Flutter 布局? 我有一个屏幕,我必须在其中显示,如图所示:一个 Logo + 3 个 TextFormFields + 2 个按钮 + 一个容器。 问题: 我需要将所有小部件
我使用最新版本的 mvvm light 工具包,但是我不清楚如何将 EventToCommand 用于事件 TreeViewItem.Expanded。 这很有效......我做错了什么?
我是 LINQ 的新手。 我有以下查询,我不知道它代表什么。 var query = (from p in data.First
这里有一个小问题。我有一个表,当我想单击运行时,该表应该展开,而且同一行中有一个展开按钮,它也应该展开一个 div。 问题:当我单击该行时,一切正常,div 将滑入。当我单击按钮(位于表行中)时,会产
图片:
我的应用程序中有 Expander 设置 FlowDirection 正常工作,但标题文本显示在水平方向。我想显示标题文本垂直绘制。 最佳答案 使用 sl 工具包中的 LayoutTransforme
我是一名优秀的程序员,十分优秀!