Transformers.js 文件

utils/tensor

您正在檢視的是需要從原始碼安裝。如果您想進行常規的 npm 安裝,請檢視最新的穩定版本 (v3.0.0)。
Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

utils/tensor

用於 `Tensor` 處理的輔助模組。

這些函式和類僅供內部使用,這意味著終端使用者無需訪問此處。


utils/tensor.Tensor

型別utils/tensor 的靜態類


new Tensor(...args)

建立新的張量或複製現有張量。

引數量型別
...args*

tensor.dims : <code> Array. < number > </code>

張量的維度。

型別Tensor 的例項屬性


tensor.type : <code> DataType </code>

張量的型別。

型別Tensor 的例項屬性


tensor.data : <code> DataArray </code>

儲存在張量中的資料。

型別Tensor 的例項屬性


tensor.size : <code> number </code>

張量中的元素數量。

型別Tensor 的例項屬性


tensor.location : <code> string </code>

張量資料的位置。

型別Tensor 的例項屬性


tensor.Symbol.iterator() ⇒ <code> Iterator </code>

返回一個迭代器物件,用於按行主序迭代張量資料。如果張量有多個維度,迭代器將生成子陣列。

型別Tensor 的例項方法
返回Iterator - 用於按行主序迭代張量資料的迭代器物件。


tensor._getitem(index) ⇒ <code> Tensor </code>

對張量物件進行索引。

型別Tensor 的例項方法
返回Tensor - 指定索引處的資料。

引數量型別描述
索引數字

要訪問的索引。


tensor.indexOf(item) ⇒ <code> number </code>

型別Tensor 的例項方法
返回number - 張量資料中項的第一次出現的索引。

引數量型別描述
number | bigint

要在張量中搜索的項


tensor._subarray(index, iterSize, iterDims) ⇒ <code> Tensor </code>

型別Tensor 的例項方法

引數量型別
索引數字
迭代大小數字
迭代維度任何

tensor.item() ⇒ <code> number </code> | <code> bigint </code>

將此張量的值作為標準 JavaScript Number 返回。這僅適用於具有一個元素的張量。對於其他情況,請參閱 `Tensor.tolist()`。

型別Tensor 的例項方法
返回number | bigint - 此張量的值作為標準 JavaScript Number。
丟擲:

  • 如果張量有多個元素,則會丟擲 Error

tensor.tolist() ⇒ <code> Array </code>

將張量資料轉換為 n 維 JS 列表

型別Tensor 的例項方法


tensor.sigmoid() ⇒ <code> Tensor </code>

返回一個新的張量,其中每個元素都應用了 sigmoid 函式。

型別Tensor 的例項方法
返回Tensor - 應用了 sigmoid 函式的張量。


tensor.sigmoid_() ⇒ <code> Tensor </code>

將 sigmoid 函式就地應用於張量。

型別Tensor 的例項方法
返回Tensor - 返回 this


tensor.map(callback) ⇒ <code> Tensor </code>

返回一個新的張量,其中每個元素都應用了回撥函式。

型別Tensor 的例項方法
返回Tensor - 一個新的張量,其中每個元素都應用了回撥函式。

引數量型別描述
回撥函式函式

要應用於每個元素的函式。它應該接受三個引數:當前元素、其索引和張量的資料陣列。


tensor.map_(callback) ⇒ <code> Tensor </code>

就地將回調函式應用於張量的每個元素。

型別Tensor 的例項方法
返回Tensor - 返回 this

引數量型別描述
回撥函式函式

要應用於每個元素的函式。它應該接受三個引數:當前元素、其索引和張量的資料陣列。


tensor.mul(val) ⇒ <code> Tensor </code>

返回一個新張量,其中每個元素都乘以一個常數。

型別Tensor 的例項方法
返回Tensor - 新張量。

引數量型別描述
數字

要相乘的值。


tensor.mul_(val) ⇒ <code> Tensor </code>

就地將張量乘以一個常數。

型別Tensor 的例項方法
返回Tensor - 返回 this

引數量型別描述
數字

要相乘的值。


tensor.div(val) ⇒ <code> Tensor </code>

返回一個新的張量,其中每個元素都除以一個常數。

型別Tensor 的例項方法
返回Tensor - 新張量。

引數量型別描述
數字

要除以的值。


tensor.div_(val) ⇒ <code> Tensor </code>

就地將張量除以一個常數。

型別Tensor 的例項方法
返回Tensor - 返回 this

引數量型別描述
數字

要除以的值。


tensor.add(val) ⇒ <code> Tensor </code>

返回一個新的張量,其中每個元素都加上一個常數。

型別Tensor 的例項方法
返回Tensor - 新張量。

引數量型別描述
數字

要新增的值。


tensor.add_(val) ⇒ <code> Tensor </code>

就地將張量加上一個常數。

型別Tensor 的例項方法
返回Tensor - 返回 this

引數量型別描述
數字

要新增的值。


tensor.sub(val) ⇒ <code> Tensor </code>

返回一個新的張量,其中每個元素都減去一個常數。

型別Tensor 的例項方法
返回Tensor - 新張量。

引數量型別描述
數字

要減去的值。


tensor.sub_(val) ⇒ <code> Tensor </code>

就地將張量減去一個常數。

型別Tensor 的例項方法
返回Tensor - 返回 this

引數量型別描述
數字

要減去的值。


tensor.clone() ⇒ <code> Tensor </code>

建立當前張量的深複製。

型別Tensor 的例項方法
返回Tensor - 一個與原始張量具有相同型別、資料和維度的新張量。


tensor.slice(...slices) ⇒ <code> Tensor </code>

沿指定維度對張量執行切片操作。

考慮一個維度為 [4, 7] 的張量。

[ 1,  2,  3,  4,  5,  6,  7]
[ 8,  9, 10, 11, 12, 13, 14]
[15, 16, 17, 18, 19, 20, 21]
[22, 23, 24, 25, 26, 27, 28]

我們可以對行和列的兩個維度進行切片,例如,在這種情況下,我們可以從第二個元素開始,然後返回到倒數第二個元素,如下所示:

tensor.slice([1, -1], [1, -1]);

這將返回:

[  9, 10, 11, 12, 13 ]
[ 16, 17, 18, 19, 20 ]

型別Tensor 的例項方法
返回Tensor - 包含所選元素的新張量。
丟擲:

  • 如果切片輸入無效,則會丟擲 Error
引數量型別描述
...切片number | Array<number> | null

每個維度的切片規範。

  • 如果給定一個數字,則選擇單個元素。
  • 如果給定一個包含兩個數字的陣列,則選擇一個元素範圍 [start, end (exclusive)]。
  • 如果給定 null,則選擇整個維度。

tensor.permute(...dims) ⇒ <code> Tensor </code>

根據提供的維度,返回此張量的置換版本。

型別Tensor 的例項方法
返回Tensor - 置換後的張量。

引數量型別描述
...維度數字

要置換的維度。


tensor.sum([dim], keepdim) ⇒

返回給定維度 dim 中輸入張量每行的總和。

型別Tensor 的例項方法
返回:求和後的張量

引數量型別預設描述
[dim]數字

要縮減的維度。如果為 null,則縮減所有維度。

保持維度booleanfalse

輸出張量是否保留 dim


tensor.norm([p], [dim], [keepdim]) ⇒ <code> Tensor </code>

返回給定張量的矩陣範數或向量範數。

型別Tensor 的例項方法
返回Tensor - 張量的範數。

引數量型別預設描述
[p]number | string'fro'

範數階數

[dim]數字

指定要計算範數的張量維度。如果 dim 為 None,則範數將計算輸入的所有維度。

[keepdim]booleanfalse

輸出張量是否保留維度。


tensor.normalize_([p], [dim]) ⇒ <code> Tensor </code>

對指定維度上的輸入執行 `L_p` 歸一化。就地操作。

型別Tensor 的例項方法
返回Tensor - 用於操作鏈的 this

引數量型別預設描述
[p]數字2

範數公式中的指數值

[dim]數字1

要縮減的維度


tensor.normalize([p], [dim]) ⇒ <code> Tensor </code>

對指定維度上的輸入執行 `L_p` 歸一化。

型別Tensor 的例項方法
返回Tensor - 歸一化後的張量。

引數量型別預設描述
[p]數字2

範數公式中的指數值

[dim]數字1

要縮減的維度


tensor.stride() ⇒ <code> Array. < number > </code>

計算並返回此張量的步長。步長是在指定維度 dim 中從一個元素到下一個元素所需的跳躍步數。

型別Tensor 的例項方法
返回Array.<number> - 此張量的步長。


tensor.squeeze([dim]) ⇒ <code> Tensor </code>

返回一個張量,其中刪除了所有指定大小為 1 的輸入維度。

注意:返回的張量與輸入張量共享儲存空間,因此更改其中一個的內容將更改另一個。如果您想要一個副本,請在壓縮之前使用 `tensor.clone()`。

型別Tensor 的例項方法
返回Tensor - 壓縮後的張量

引數量型別預設描述
[dim]number | Array<number>

如果給定,則僅在指定維度中壓縮輸入。


tensor.squeeze_()

@see Tensor.squeeze 的就地版本

型別Tensor 的例項方法


tensor.unsqueeze(dim) ⇒ <code> Tensor </code>

返回一個新張量,在指定位置插入大小為一的維度。

注意:返回的張量與此張量共享相同的基礎資料。

型別Tensor 的例項方法
返回Tensor - 未壓縮的張量

引數量型別預設描述
維度數字

插入單例維度的索引


tensor.unsqueeze_()

@see Tensor.unsqueeze 的就地版本

型別Tensor 的例項方法


tensor.flatten_()

@see Tensor.flatten 的就地版本

型別Tensor 的例項方法


tensor.flatten(start_dim, end_dim) ⇒ <code> Tensor </code>

透過將輸入重塑為一維張量來展平輸入。如果傳遞了 `start_dim` 或 `end_dim`,則只展平從 `start_dim` 開始到 `end_dim` 結束的維度。輸入的元素順序不變。

型別Tensor 的例項方法
返回Tensor - 展平後的張量。

引數量型別預設描述
開始維度數字0

要展平的第一個維度

結束維度數字

要展平的最後一個維度


tensor.view(...dims) ⇒ <code> Tensor </code>

返回一個新張量,其資料與 self 張量相同,但 形狀 不同。

型別Tensor 的例項方法
返回Tensor - 資料相同但形狀不同的張量

引數量型別描述
...維度數字

所需大小


tensor.gt(val) ⇒ <code> Tensor </code>

逐元素計算輸入 > 值。

型別Tensor 的例項方法
返回Tensor - 一個布林張量,當輸入大於其他值時為 true,否則為 false

引數量型別描述
數字

要比較的值。


tensor.lt(val) ⇒ <code> Tensor </code>

逐元素計算輸入 < 值。

型別Tensor 的例項方法
返回Tensor - 一個布林張量,當輸入小於其他值時為 true,否則為 false

引數量型別描述
數字

要比較的值。


tensor.clamp_()

@see Tensor.clamp 的就地版本

型別Tensor 的例項方法


tensor.clamp(min, max) ⇒ <code> Tensor </code>

將輸入中的所有元素限制在 [min, max] 範圍內

型別Tensor 的例項方法
返回Tensor - 輸出張量。

引數量型別描述
最小數字

要限制的範圍下限

最大數字

要限制的範圍上限


tensor.round_()

@see Tensor.round 的就地版本

型別Tensor 的例項方法


tensor.round() ⇒ <code> Tensor </code>

將輸入中的元素四捨五入到最近的整數。

型別Tensor 的例項方法
返回Tensor - 輸出張量。


tensor.to(type) ⇒ <code> Tensor </code>

執行張量資料型別轉換。

型別Tensor 的例項方法
返回Tensor - 轉換後的張量。

引數量型別描述
型別資料型別

所需的資料型別。


utils/tensor.permute(tensor, axes) ⇒ <code> Tensor </code>

根據提供的軸排列張量。

類別: utils/tensor 的靜態方法
返回Tensor - 置換後的張量。

引數量型別描述
張量任何

要排列的輸入張量。

陣列

張量沿其排列的軸。


utils/tensor.interpolate(input, size, mode, align_corners) ⇒ <code> Tensor </code>

將張量插值到給定大小。

類別: utils/tensor 的靜態方法
返回: Tensor - 插值後的張量。

引數量型別描述
輸入張量

要插值的輸入張量。資料必須是通道優先的(即 [c, h, w])

尺寸Array.<number>

影像的輸出尺寸

模式字串

插值模式

align_cornersboolean

是否對齊角點。


utils/tensor.interpolate_4d(input, options) ⇒ <code> Promise. < Tensor > </code>

對輸入進行降取樣/升取樣。靈感來自 https://pytorch.org/docs/stable/generated/torch.nn.functional.interpolate.html

類別: utils/tensor 的靜態方法
返回: Promise.<Tensor> - 插值後的張量。

引數量型別預設描述
輸入張量

輸入張量

選項物件

插值的選項

[options.size]*

輸出空間大小。

[options.mode]"nearest" | "bilinear" | "bicubic"'bilinear'

上取樣使用的演算法


utils/tensor.matmul(a, b) ⇒ <code> Promise. < Tensor > </code>

兩個張量的矩陣乘積。靈感來自 https://pytorch.org/docs/stable/generated/torch.matmul.html

類別: utils/tensor 的靜態方法
返回: Promise.<Tensor> - 兩個張量的矩陣乘積。

引數量型別描述
a張量

第一個乘數張量

b張量

第二個乘數張量


utils/tensor.rfft(x, a) ⇒ <code> Promise. < Tensor > </code>

計算實值輸入的一維傅立葉變換。靈感來自 https://pytorch.org/docs/stable/generated/torch.fft.rfft.html

類別: utils/tensor 的靜態方法
返回: Promise.<Tensor> - 輸出張量。

引數量型別描述
x張量

實數輸入張量

a張量

進行一維實數 FFT 的維度。


utils/tensor.topk(x, [k]) ⇒ <code> * </code>

返回給定輸入張量的 k 個最大元素。靈感來自 https://pytorch.org/docs/stable/generated/torch.topk.html

類別: utils/tensor 的靜態方法
返回: * - 包含 top-k 元素及其索引的輸出元組 (Tensor, LongTensor)。

引數量型別描述
x張量

輸入張量

[k]數字

"top-k" 中的 k 值


utils/tensor.slice(data:, starts:, ends:, axes:, [steps]) ⇒ <code> Promise. < Tensor > </code>

切片多維 float32 張量。

類別: utils/tensor 的靜態方法
返回: Promise.<Tensor> - 切片資料張量。

引數量型別描述
data張量

要提取切片的資料張量

startsArray.<number>

axes 中對應軸的起始索引的一維陣列

endsArray.<number>

axes 中對應軸的結束索引(不包含)的一維陣列

Array.<number>

starts 和 ends 應用的軸的一維陣列

[steps]Array.<number>

axes 中對應軸的切片步長的一維陣列。


utils/tensor.mean_pooling(last_hidden_state, attention_mask) ⇒ <code> Tensor </code>

對最後一個隱藏狀態執行平均池化,然後進行歸一化。

類別: utils/tensor 的靜態方法
返回: Tensor - 返回形狀為 [batchSize, embedDim] 的新張量。

引數量型別描述
last_hidden_state張量

形狀為 [batchSize, seqLength, embedDim] 的張量

attention_mask張量

形狀為 [batchSize, seqLength] 的張量


utils/tensor.layer_norm(input, normalized_shape, options) ⇒ <code> Tensor </code>

對最後某些維度應用層歸一化。

類別: utils/tensor 的靜態方法
返回Tensor - 歸一化後的張量。

引數量型別預設描述
輸入張量

輸入張量

normalized_shapeArray.<number>

期望輸入大小的輸入形狀

選項物件

層歸一化的選項

[options.eps]數字1e-5

為數值穩定性新增到分母的值。


utils/tensor.cat(tensors, dim) ⇒ <code> Tensor </code>

沿著指定維度連線張量陣列。

類別: utils/tensor 的靜態方法
返回: Tensor - 連線後的張量。

引數量型別描述
張量Array.<Tensor>

要連線的張量陣列。

維度數字

要連線的維度。


utils/tensor.stack(tensors, dim) ⇒ <code> Tensor </code>

沿著指定維度堆疊張量陣列。

類別: utils/tensor 的靜態方法
返回: Tensor - 堆疊後的張量。

引數量型別描述
張量Array.<Tensor>

要堆疊的張量陣列。

維度數字

要堆疊的維度。


utils/tensor.std_mean(input, dim, correction, keepdim) ⇒ <code> Array. < Tensor > </code>

計算由 dim 指定的維度的標準差和均值。dim 可以是單個維度,或為 null 以縮減所有維度。

類別: utils/tensor 的靜態方法
返回: Array.<Tensor> - (std, mean) 張量的元組。

引數量型別描述
輸入張量

輸入張量

維度number | null

要縮減的維度。如果為 None,則縮減所有維度。

校正數字

樣本大小與樣本自由度之間的差值。預設為貝塞爾校正,correction=1。

保持維度boolean

輸出張量是否保留 dim。


utils/tensor.mean(input, dim, keepdim) ⇒ <code> Tensor </code>

返回給定維度 dim 中輸入張量每行的平均值。

類別: utils/tensor 的靜態方法
返回: Tensor - 沿著指定維度取平均值的新張量。

引數量型別描述
輸入張量

輸入張量。

維度number | null

要縮減的維度。

保持維度boolean

輸出張量是否保留 dim。


utils/tensor.full(size, fill_value) ⇒ <code> Tensor </code>

建立一個大小為 size 且填充了 fill_value 的張量。張量的資料型別根據 fill_value 推斷。

類別: utils/tensor 的靜態方法
返回: Tensor - 填充後的張量。

引數量型別描述
尺寸Array.<number>

定義輸出張量形狀的整數序列。

fill_valuenumber | bigint | boolean

用於填充輸出張量的值。


utils/tensor.ones(size) ⇒ <code> Tensor </code>

返回一個填充了標量值 1 的張量,其形狀由可變引數 size 定義。

類別: utils/tensor 的靜態方法
返回: Tensor - 全為 1 的張量。

引數量型別描述
尺寸Array.<number>

定義輸出張量形狀的整數序列。


utils/tensor.ones_like(tensor) ⇒ <code> Tensor </code>

返回一個填充了標量值 1 的張量,其大小與輸入張量相同。

類別: utils/tensor 的靜態方法
返回: Tensor - 全為 1 的張量。

引數量型別描述
張量張量

輸入張量的大小將決定輸出張量的大小。


utils/tensor.zeros(size) ⇒ <code> Tensor </code>

返回一個填充了標量值 0 的張量,其形狀由可變引數 size 定義。

類別: utils/tensor 的靜態方法
返回: Tensor - 全為 0 的張量。

引數量型別描述
尺寸Array.<number>

定義輸出張量形狀的整數序列。


utils/tensor.zeros_like(tensor) ⇒ <code> Tensor </code>

返回一個填充了標量值 0 的張量,其大小與輸入張量相同。

類別: utils/tensor 的靜態方法
返回: Tensor - 全為 0 的張量。

引數量型別描述
張量張量

輸入張量的大小將決定輸出張量的大小。


utils/tensor.rand(size) ⇒ <code> Tensor </code>

返回一個填充了來自區間 [0, 1) 的均勻分佈隨機數的張量

類別: utils/tensor 的靜態方法
返回: Tensor - 隨機張量。

引數量型別描述
尺寸Array.<number>

定義輸出張量形狀的整數序列。


utils/tensor.quantize_embeddings(tensor, precision) ⇒ <code> Tensor </code>

將嵌入張量量化為二進位制或無符號二進位制精度。

類別: utils/tensor 的靜態方法
返回: Tensor - 量化後的張量。

引數量型別描述
張量張量

要量化的張量。

精度'binary' | 'ubinary'

用於量化的精度。


utils/tensor~args[0] : <code> ONNXTensor </code>

類別: utils/tensor 的內部屬性


utils/tensor~reshape(data, dimensions) ⇒ <code> * </code>

根據提供的維度,將一維陣列重塑為 N 維陣列。

類別: utils/tensor 的內部方法
返回: * - 重塑後的陣列。

引數量型別描述
dataArray<T> | DataArray

要重塑的輸入陣列。

維度DIM

目標形狀/維度。

示例

reshape([10                    ], [1      ]); // Type: number[]      Value: [10]
  reshape([1, 2, 3, 4            ], [2, 2   ]); // Type: number[][]    Value: [[1, 2], [3, 4]]
  reshape([1, 2, 3, 4, 5, 6, 7, 8], [2, 2, 2]); // Type: number[][][]  Value: [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
  reshape([1, 2, 3, 4, 5, 6, 7, 8], [4, 2   ]); // Type: number[][]    Value: [[1, 2], [3, 4], [5, 6], [7, 8]]

reshape~reshapedArray : <code> any </code>

類別: reshape 的內部屬性


utils/tensor~reduce_helper(callbackfn, input, dim, keepdim) ⇒ <code> * </code>

類別: utils/tensor 的內部方法
返回: * - 縮減後的張量資料。

引數量型別預設描述
callbackfn*
輸入張量

輸入張量。

維度number | null

要縮減的維度。

保持維度booleanfalse

輸出張量是否保留 dim。


utils/tensor~DataArray : <code> * </code>

類別: utils/tensor 的內部型別定義


utils/tensor~NestArray : <code> * </code>

這會建立給定型別和深度的巢狀陣列(請參閱示例)。

類別: utils/tensor 的內部型別定義
示例

NestArray<string, 1>; // string[]

示例

NestArray<number, 2>; // number[][]

示例

NestArray<string, 3>; // string[][][] etc.

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.