Tensorflow.js 張量和變量

2020-07-21 14:25 更新

張量(Tensor)和變量(Variable)是TensorFlow.js中數(shù)據(jù)的主要表現(xiàn)形式,兩者不同之處在于張量是不可變的,而變量是可變的。


張量(Tensor)

TensorFlow.js中數(shù)據(jù)的中心單位是張量:一組數(shù)值形成一個(gè)或多個(gè)維度的數(shù)組。 張量實(shí)例具有定義數(shù)組形狀的形狀屬性。

Tensorflow.js中數(shù)據(jù)的主要表現(xiàn)形式就是tensor(張量):由 一組數(shù)值形成一維或多維數(shù)組。一個(gè)Tensor實(shí)例有一個(gè)shape屬性來定義這一組數(shù)值如何組成張量,而最主要的Tensor實(shí)例的構(gòu)造函數(shù)就是 tf.tensor 函數(shù),如下所示:

// 2x3 Tensor
const shape = [2, 3]; // 2 行, 3 列
const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape);
a.print(); // 打印張量值
// 輸出:    [[1 , 2 , 3 ],
//          [10, 20, 30]]

// shape也可以用下面的方式實(shí)現(xiàn):
const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]);
b.print();
// 輸出:    [[1 , 2 , 3 ],
//          [10, 20, 30]]

但是,為了構(gòu)造低秩張量,我們推薦使用下面的函數(shù)來增強(qiáng)代碼的可讀性:tf.scalar(零維), tf.tensor1d(一維), tf.tensor2d(二維), tf.tensor3d(三維)、tf.tensor4d(四維)以及 tf.ones(值全是1)或者tf.zeros(值全是0) ,如下所示:

const a = tf.scalar(3.14);
a.print(); // 輸出零維張量

const b = tf.tensor2d([[2, 3, 4], [5, 6, 7]]);
b.print(); // 輸出二維張量

const c = tf.zeros([2, 3]);
c.print(); // 輸出2行3列的值全是0的張量

const d = tf.ones([3, 5]);
d.print(); // 輸出3行5列的值全是1的張量

在TensorFlow.js中,張量是不變的; 一旦創(chuàng)建你就不能改變它們的值。 但是,您可以對(duì)它們執(zhí)行操作來生成新的張量。


變量(Variable)

Variables變量是通過張量進(jìn)行初始化得到的。不像Tensor的值不可變,變量的值是可變的。你可以使用變量的assign方法分配一個(gè)新的tensor到這個(gè)變量上,這是變量就會(huì)改變

const initialValues = tf.zeros([5]);
const biases = tf.variable(initialValues); // 初始化biases
biases.print(); // 輸出: [0, 0, 0, 0, 0]

const updatedValues = tf.tensor1d([0, 1, 0, 1, 0]);
biases.assign(updatedValues); // 更新 biases的值
biases.print(); // 輸出: [0, 1, 0, 1, 0]

如上所示,首先使用tf.zeros得到一個(gè)張量,然后利用這個(gè)張量初始化得到一個(gè)變量,接著我們就可以打印這個(gè)變量,并且通Object.prototype.toString.call(biases)方法可以判斷變量也是一個(gè)對(duì)象,接著,我們?cè)偕梢粋€(gè)張量,然后變量調(diào)用assign方法傳入這個(gè)張量,就可以得到一個(gè)新的變量了,如下

11

由此我們可以得出一個(gè)結(jié)論:變量由張量生成,且張量不可變而變量可變。


以上就是Tensorflow.js 張量和變量的相關(guān)介紹,希望對(duì)大家有所幫助。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)