问题标签 [tensor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
255 浏览

c++ - 特征:张量乘法运算符的奇怪行为

0 投票
0 回答
865 浏览

tensorflow - 从tensorboard看tensor_content怎么解释?

当我使用 tensorboard 时,我发现了一些有趣的东西。我已经解释了一点,但我想知道更多。问题如下所示,我定义了一个等于的张量[-1, 28, 28, 1],并使用张量板显示节点,有一些属性。

tensor_content,377的二进制是011 111 111,我们需要最后8位,所以377,377,377,377 = 111......111 (32 bits),等于-1十进制,并且034 = 000 101 100,我们需要最后8位00101100,所以034,000,000,000 = 00101100...(... means 24 bits of 0),我们应该从右到左看,所以等于28,剩下的28和1是一样的。

我想问一下我的解释是否正确。如果它是正确的,为什么不使用 377(3 3 位二进制)而不是 15,15(2 4 位二进制)?任何人都可以通过官方材料提供我的声明吗?

0 投票
11 回答
169619 浏览

python - Pytorch 重塑张量维度

例如,我有尺寸为 (5) 的一维向量。我想将其重塑为二维矩阵(1,5)。

这是我使用 numpy 的方法

但是我怎么能用 Pytorch 张量(和变量)做到这一点。我不想切换回 numpy 并再次切换到 Torch 变量,因为它会丢失反向传播信息。

这是我在 Pytorch 中所拥有的

现在我希望它的大小为 (1, 5)。如何在不丢失 grad 信息的情况下调整变量中 pytorch 张量的尺寸或重塑其尺寸。(因为我会在后退之前输入另一个模型)

0 投票
1 回答
154 浏览

lua - 如何执行火炬模型的输出二值化

我必须对o火炬模型(lua 脚本)的输出进行二值化,值范围是 [-1,+1],我想以以下方式对这些值进行阈值处理:

输出由 32 个大小为 1x1 浮点张量的层组成,所以 32 个浮点数,我想从这 32 个浮点数中获取 32 位,但我找不到允许这样做的层。

目前我有一个 for 循环来检查每个级别的值,但速度很慢。

也许我可以使用阈值层或自己实现一个,您有什么建议吗?

0 投票
0 回答
1167 浏览

tensorflow - Tensorflow收集矩阵的列非常慢

给定两个矩阵 A (1000 x 100) 和 B (100 x 1000),而不是直接在 tensorflow 中计算它们的乘积,即 ,tf.dot(A,B)我想先从 A 中选择 10 个列(随机),从 B 中选择 10 行,然后使用tf.dot(A_s,B_s)

自然,第二次乘法应该快得多,因为所需的乘法次数减少了 10 倍。

然而,实际上,在 tensorflow 中选择矩阵 A 的给定列来创建 A_s 似乎是一个效率极低的过程。

给定 中所需列的索引idx,我尝试了以下解决方案来创建 A_s。解决方案根据其性能进行排名:

  1. . A_s = tf.transpose(tf.gather(tf.unstack(A, axis=1), idx))

tf.dot(A_s,B_s)tf.dot(A,B)因为创建 A_s 太昂贵,所以慢了 5 倍。

    2.

导致产品速度降低 6-7 倍

    3.

慢 10-12 倍。

非常感谢任何关于如何提高列选择过程效率的想法。

PS1:我在 CPU 上运行了所有实验。

PS2:矩阵 A 是占位符而不是变量。在某些实现中,它可能会出现问题,因为它的形状可能无法推断出来。

0 投票
1 回答
986 浏览

arrays - 一种快速遍历具有不同形状的多维数组的方法?

向量操作可以通过在许多索引上广播每个索引操作来简洁地编写和加速。例如,将一个向量复制到一个更大的向量中(例如,在 FFT 卷积之前进行零填充时)。但是,如果数组具有不同的形状,张量(多维数组)就不具有相同的顺序整数索引。例如,2x4 矩阵中的元素 (1,3) 的整数索引为 1*3 + 4 = 7,但 3x5 矩阵中的相同元素的索引为 1*5 + 3 = 8(参见下面的示例)。

                         在此处输入图像描述           在此处输入图像描述

所以将一个矩阵复制到一个更大的矩阵是比较棘手的。如果您在编译时知道形状,则可以编写嵌套的 for 循环:

这遵循以下方案:

x_index= t 0 ·s 1 ·s 2 ·s 3 ·s 4 ···s d−1 + t 1 ·s 2 ·s 3 ·s 4 ···s d−1 + t 2 ·s 3 ·s 4 ···s d-1 + ... + t d-2 ·s d-1 + t d-1

但是,当您在编译时不知道维度时,这是不可能的(因为您需要知道 for 循环的数量)。解决此问题的一种方法是使用元组索引,您将在每次迭代中递增列,并在您到达张量的边界(形状值)后执行进位操作。具有形状 (2,2,2) 的张量的示例可能如下所示:

                         在此处输入图像描述

但是,代码涉及 if 语句,这些语句转换为代码中的分支,以执行进位操作。

另一种方法是简单地将具有形状 X 的张量的平面整数索引重新映射到具有不同形状 Y 的张量中的平面索引(这可以通过模运算来完成):

这消除了 if 语句,但它确实有模和除法运算,不会像加法或乘法那样快。当张量具有所有轴都是 2 的幂的形状时,可以通过位旋转来加快速度,将 % 操作替换为 & 和 / 替换为 >>。

现在的问题是,这些方法中哪一种在实践中更快?当然,有用于多维数组的库(例如 boost),但它们似乎要求在编译时知道数组的维度,并且当张量具有不同的形状时,像 scala 或 go 中的一些映射函数非常棘手。

0 投票
1 回答
9092 浏览

android-studio - 在 Tensorboard 上分析张量流图或 .pb 文件

我一直在关注“Tensorflow on Android”的 github 存储库。

  1. 我能够使用 bazel 构建代码,然后将 Android 项目导入 Android Studio,如此所述。
  2. 如您所见,使用 Android Studio 构建 APK 后,模型文件/图表包含在tensorflow/examples/android/assets
  3. 默认情况下,tensorflow_inception_graph.pb并且imagenet_comp_graph_label_strings.txt包含在构建 APK 时下载的 inception5 文件中。

有什么问题?

  1. 我有一个重新训练的图(InceptionV3 模型,在 中提到tensorflow/examples/image_retraining/retrain.py),我能够将它放在 android 目录的 assets 文件夹中并生成一个工作 APK。
  2. 我使用默认图形或 .pb 文件时的推理时间约为 500 毫秒,而我的 retrained.pb 或图形约为 1400 毫秒。(在 OnePlus3T 设备上测试)

请帮我理解

  1. 如何分析tensorflow_inception_graph.pbTensorboard 上的默认值
0 投票
1 回答
350 浏览

python - 如何从 Theano 张量中提取 numpy 数组?

我们正在研究 3D 卷积神经网络的实现,用于分割 3D 医学图像。

我们用 Lasagne 和 Theano 建立了一个网络,它成功地构建了一个 5D 张量。我们想从这个张量中提取实际的“图像”作为 3D numpy 数组,以查看分段地图的实际外观。

我们得到这样的输出:

然后定义损失、更新等。

并像这样定义 theano 函数:

然后我们在 for 循环中训练一个网络:

我们尝试过像这样使用 eval 函数:

输出:

但我们真正想要得到的是网络的实际输出(根据我们的输入,它们的大小应该是 24*160*160),因此损失函数用来与我们的测试数据进行比较的输出。任何人都可以帮助我们吗?

0 投票
1 回答
15968 浏览

lua - Torch:按索引删除张量列

我想通过索引数组或张量删除张量列。例如:

0 投票
8 回答
33913 浏览

python - 如何打印 Keras 张量的值?

我正在实现自己的 Keras 损失函数。如何访问张量值?

我试过的

它打印

是否有任何 Keras 函数来访问y_true值?