真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么

今天就跟大家聊聊有關(guān)掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有開(kāi)平免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

張量的定義:什么是張量

張量是TensorFlow的均勻型多維數(shù)組。它們非常類(lèi)似于NumPy數(shù)組,并且它們是不可變的,這意味著一旦創(chuàng)建它們就不能被更改。只能使用編輯創(chuàng)建新副本。

讓我們看看張量如何與代碼示例一起工作。但是首先,要使用TensorFlow對(duì)象,我們需要導(dǎo)入TensorFlow庫(kù)。我們經(jīng)常將NumPy與TensorFlow一起使用,因此我們還可以使用以下行導(dǎo)入NumPy:

import tensorflow as tf
import numpy as np

張量的創(chuàng)建:創(chuàng)建張量對(duì)象

有幾種方法可以創(chuàng)建tf.Tensor對(duì)象。讓我們從幾個(gè)例子開(kāi)始??梢允褂枚鄠€(gè)TensorFlow函數(shù)創(chuàng)建張量對(duì)象,如下例所示:

# 你可以用`tf.constant`函數(shù)創(chuàng)建tf.Tensor對(duì)象:
x = tf.constant([[1, 2, 3, 4 ,5]])
# 你可以用`tf.ones`函數(shù)創(chuàng)建tf.Tensor對(duì)象:
y = tf.ones((1,5))
# 你可以用`tf.zeros`函數(shù)創(chuàng)建tf.Tensor對(duì)象:
z = tf.zeros((1,5))
# 你可以用`tf.range`函數(shù)創(chuàng)建tf.Tensor對(duì)象:
q = tf.range(start=1, limit=6, delta=1)

print(x)
print(y)
print(z)
print(q)
輸出:

tf.Tensor([[1 2 3 4 5]], shape=(1, 5), dtype=int32)
tf.Tensor([[1. 1. 1. 1. 1.]], shape=(1, 5), dtype=float32) 
tf.Tensor([[0. 0. 0. 0. 0.]], shape=(1, 5), dtype=float32) 
tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)

如你所見(jiàn),我們使用三個(gè)不同的函數(shù)創(chuàng)建了形狀(1,5)的張量對(duì)象,使用tf.range()函數(shù)創(chuàng)建了形狀(5,)的第四個(gè)張量對(duì)象。注意,tf.ones的和tf.zeros接受形狀作為必需的參數(shù),因?yàn)樗鼈兊脑刂凳穷A(yù)先確定的。

張量對(duì)象的特征

tf.Tensor創(chuàng)建對(duì)象,它們有幾個(gè)特征。首先,他們有維度數(shù)量。其次,它們有一個(gè)形狀,一個(gè)由維度的長(zhǎng)度組成的列表。所有張量都有一個(gè)大小,即張量中元素的總數(shù)。最后,它們的元素都被記錄在一個(gè)統(tǒng)一的數(shù)據(jù)類(lèi)型(datatype)中。讓我們仔細(xì)看看這些特征。

維度

張量根據(jù)其維數(shù)進(jìn)行分類(lèi):

  • Rank-0(標(biāo)量)張量:包含單個(gè)值且沒(méi)有軸的張量(0維);

  • Rank-1張量:包含單軸(一維)值列表的張量;

  • Rank-2張量:包含2個(gè)軸(2維)的張量;以及

  • Rank-N張量:包含N軸的張量(三維)。

掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么

例如,我們可以通過(guò)向tf.constant傳遞一個(gè)三層嵌套的list對(duì)象來(lái)創(chuàng)建一個(gè)Rank-3張量。對(duì)于這個(gè)例子,我們可以將數(shù)字分割成一個(gè)3層嵌套的列表,每個(gè)層有3個(gè)元素:

three_level_nested_list = [[[0, 1, 2], 
                             [3, 4, 5]], 
                           [[6, 7, 8], 
                            [9, 10, 11]] ]
rank_3_tensor = tf.constant(three_level_nested_list)
print(rank_3_tensor)
Output:
tf.Tensor( [[[ 0  1  2]   
             [ 3  4  5]]   
             
            [[ 6  7  8]   
             [ 9 10 11]]],
  shape=(2, 2, 3), dtype=int32)

我們可以查看“rank_3_tensor”對(duì)象當(dāng)前具有“.ndim”屬性的維度數(shù)。

tensor_ndim = rank_3_tensor.ndim
print("The number of dimensions in our Tensor object is", tensor_ndim)
Output:
The number of dimensions in our Tensor object is 3
形狀

形狀特征是每個(gè)張量都具有的另一個(gè)屬性。它以列表的形式顯示每個(gè)維度的大小。我們可以查看使用.shape屬性創(chuàng)建的rank_3_tensor對(duì)象的形狀,如下所示:

tensor_shape = rank_3_tensor.shape
print("The shape of our Tensor object is", tensor_shape)
Output:
The shape of our Tensor object is (2, 2, 3)

如你所見(jiàn),我們的張量在第一層有兩個(gè)元素,第二層有兩個(gè)元素,第三層有三個(gè)元素。

大小

大小是張量的另一個(gè)特征,它意味著張量有多少個(gè)元素。我們不能用張量對(duì)象的屬性來(lái)測(cè)量大小。相反,我們需要使用tf.size函數(shù)。最后,我們將使用實(shí)例函數(shù).NumPy()將輸出轉(zhuǎn)換為NumPy,以獲得更具可讀性的結(jié)果:

tensor_size = tf.size(rank_3_tensor).numpy()
print("The size of our Tensor object is", tensor_size)
Output:
The size of our Tensor object is 12
數(shù)據(jù)類(lèi)型

張量通常包含數(shù)字?jǐn)?shù)據(jù)類(lèi)型,如浮點(diǎn)和整數(shù),但也可能包含許多其他數(shù)據(jù)類(lèi)型,如復(fù)數(shù)和字符串。

但是,每個(gè)張量對(duì)象必須將其所有元素存儲(chǔ)在一個(gè)統(tǒng)一的數(shù)據(jù)類(lèi)型中。因此,我們還可以使用.dtype屬性查看為特定張量對(duì)象選擇的數(shù)據(jù)類(lèi)型,如下所示:

tensor_dtype = rank_3_tensor.dtype
print("The data type selected for this Tensor object is", tensor_dtype)
Output:
The data type selected for this Tensor object is 

張量運(yùn)算

索引

索引是項(xiàng)目在序列中位置的數(shù)字表示。這個(gè)序列可以引用很多東西:一個(gè)列表、一個(gè)字符串或任意的值序列。

TensorFlow還遵循標(biāo)準(zhǔn)的Python索引規(guī)則,這類(lèi)似于列表索引或NumPy數(shù)組索引。

關(guān)于索引的一些規(guī)則:

  1. 索引從零(0)開(kāi)始。

  2. 負(fù)索引(“-n”)值表示從末尾向后計(jì)數(shù)。

  3. 冒號(hào)(“:”)用于切片:開(kāi)始:停止:步驟。

  4. 逗號(hào)(“,”)用于達(dá)到更深層次。

讓我們用以下幾行創(chuàng)建rank_1_tensor:

single_level_nested_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
rank_1_tensor = tf.constant(single_level_nested_list)
print(rank_1_tensor)
Output: 
tf.Tensor([ 0  1  2  3  4  5  6  7  8  9 10 11], 
  shape=(12,), dtype=int32)

測(cè)試一下我們的規(guī)則1,2,3:

# 規(guī)則1,索引從0開(kāi)始
print("First element is:",
  rank_1_tensor[0].numpy())


# 規(guī)則2,負(fù)索引
print("Last element is:",
  rank_1_tensor[-1].numpy())


# 規(guī)則3,切片
print("Elements in between the 1st and the last are:",
  rank_1_tensor[1:-1].numpy())
Output: 
First element is: 0 
Last element is: 11 
Elements in between the 1st and the last are: [ 1  2  3  4  5  6  7  8  9 10]

現(xiàn)在,讓我們用以下代碼創(chuàng)建rank_2_tensor:

two_level_nested_list = [ [0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11] ]
rank_2_tensor = tf.constant(two_level_nested_list)
print(rank_2_tensor)
Output:
tf.Tensor( [[ 0  1  2  3  4  5]  
            [ 6  7  8  9 10 11]], shape=(2, 6), dtype=int32)

并用幾個(gè)例子來(lái)測(cè)試第4條規(guī)則:

print("The 1st element of the first level is:",
  rank_2_tensor[0].numpy())

print("The 2nd element of the first level is:",
  rank_2_tensor[1].numpy())

# 規(guī)則4, 逗號(hào)代表進(jìn)入更深層
print("The 1st element of the second level is:",
  rank_2_tensor[0, 0].numpy())

print("The 3rd element of the second level is:",
  rank_2_tensor[0, 2].numpy())
Output: 
The first element of the first level is: [0 1 2 3 4 5] 
The second element of the first level is: [ 6  7  8  9 10 11] 
The first element of the second level is: 0 
The third element of the second level is: 2

現(xiàn)在,我們已經(jīng)介紹了索引的基本知識(shí),讓我們看看我們可以對(duì)張量進(jìn)行的基本操作。

張量基本運(yùn)算

你可以輕松地對(duì)張量進(jìn)行基本的數(shù)學(xué)運(yùn)算,例如:

  1. 加法

  2. 元素乘法

  3. 矩陣乘法

  4. 求最大值或最小值

  5. 找到Max元素的索引

  6. 計(jì)算Softmax值

讓我們看看這些運(yùn)算。我們將創(chuàng)建兩個(gè)張量對(duì)象并應(yīng)用這些操作。

a = tf.constant([[2, 4], 
                 [6, 8]], dtype=tf.float32)
b = tf.constant([[1, 3], 
                 [5, 7]], dtype=tf.float32)

我們可以從加法開(kāi)始。

# 我們可以使用' tf.add() '函數(shù)并將張量作為參數(shù)傳遞。
add_tensors = tf.add(a,b)
print(add_tensors)
Output:
tf.Tensor( [[ 3.  7.]  
            [11. 15.]], shape=(2, 2), dtype=float32)

乘法

# 我們可以使用' tf.multiply() '函數(shù)并將張量作為參數(shù)傳遞。
multiply_tensors = tf.multiply(a,b)
print(multiply_tensors)
Output:
tf.Tensor( [[ 2. 12.]  
            [30. 56.]], shape=(2, 2), dtype=float32)

矩陣乘法:

# 我們可以使用' tf.matmul() '函數(shù)并將張量作為參數(shù)傳遞。
matmul_tensors = tf.matmul(a,b)
print(matmul_tensors)
Output:
tf.Tensor( [[ 2. 12.]  
            [30. 56.]], shape=(2, 2), dtype=float32)

注意:Matmul操作是深度學(xué)習(xí)算法的核心。因此,盡管你不會(huì)直接使用matmul,但了解這些操作是至關(guān)重要的。

我們上面列出的其他操作示例:

# 使用' tf.reduce_max() '和' tf.reduce_min() '函數(shù)可以找到最大值或最小值
print("The Max value of the tensor object b is:",
  tf.reduce_max(b).numpy())

# 使用' tf.argmax() '函數(shù)可以找到最大元素的索引
print("The index position of the max element of the tensor object b is:",
  tf.argmax(b).numpy())

# 使用 tf.nn.softmax'函數(shù)計(jì)算softmax
print("The softmax computation result of the tensor object b is:",
  tf.nn.softmax(b).numpy())
Output:
The Max value of the tensor object b is: 1.0 
The index position of the Max of the tensor object b is: [1 1] 
The softmax computation result of the tensor object b is: [[0.11920291 0.880797  ]  [0.11920291 0.880797  ]]
操縱形狀

就像在NumPy數(shù)組和pandas數(shù)據(jù)幀中一樣,你也可以重塑張量對(duì)象。

這個(gè)變形操作非??欤?yàn)榈讓訑?shù)據(jù)不需要復(fù)制。對(duì)于重塑操作,我們可以使用tf.reshape函數(shù)

# 我們的初始張量
a = tf.constant([[1, 2, 3, 4, 5, 6]])
print('The shape of the initial Tensor object is:', a.shape)

b = tf.reshape(a, [6, 1])
print('The shape of the first reshaped Tensor object is:', b.shape)

c = tf.reshape(a, [3, 2])
print('The shape of the second reshaped Tensor object is:', c.shape)

# 如果我們以shape參數(shù)傳遞-1,那么張量就變平坦化。
print('The shape of the flattened Tensor object is:', tf.reshape(a, [-1]))
Output:
The shape of our initial Tensor object is: (1, 6) 
The shape of our initial Tensor object is: (6, 1) 
The shape of our initial Tensor object is: (3, 2) 
The shape of our flattened Tensor object is: tf.Tensor([1 2 3 4 5 6], shape=(6,), dtype=int32)

如你所見(jiàn),我們可以很容易地重塑我們的張量對(duì)象。但要注意的是,在進(jìn)行重塑操作時(shí),開(kāi)發(fā)人員必須是合理的。否則,張量可能會(huì)混淆,甚至?xí)a(chǎn)生錯(cuò)誤。所以,小心點(diǎn)????.

廣播

當(dāng)我們嘗試使用多個(gè)張量對(duì)象進(jìn)行組合操作時(shí),較小的張量可以自動(dòng)伸展以適應(yīng)較大的張量,就像NumPy數(shù)組一樣。例如,當(dāng)你嘗試將標(biāo)量張量與秩2張量相乘時(shí),標(biāo)量將被拉伸以乘以每個(gè)秩2張量元素。參見(jiàn)以下示例:

m = tf.constant([5])

n = tf.constant([[1,2],[3,4]])

print(tf.multiply(m, n))
Output:
tf.Tensor( [[ 5 10]  
            [15 20]], shape=(2, 2), dtype=int32)

多虧了廣播,在對(duì)張量進(jìn)行數(shù)學(xué)運(yùn)算時(shí),你不必?fù)?dān)心大小匹配。

張量的特殊類(lèi)型

我們傾向于生成矩形的張量,并將數(shù)值存儲(chǔ)為元素。但是,TensorFlow還支持不規(guī)則或特殊的張量類(lèi)型,這些類(lèi)型包括:

  1. 參差不齊的張量

  2. 字符串張量

  3. 稀疏張量

掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么

讓我們仔細(xì)看看每一個(gè)都是什么。

參差不齊的張量

參差不齊張量是沿著尺寸軸具有不同數(shù)量元素的張量

可以構(gòu)建不規(guī)則張量,如下所示

ragged_list = [[1, 2, 3],[4, 5],[6]]

ragged_tensor = tf.ragged.constant(ragged_list)

print(ragged_tensor)
Output:
字符串張量

字符串張量是存儲(chǔ)字符串對(duì)象的張量。我們可以建立一個(gè)字符串張量,就像你創(chuàng)建一個(gè)普通的張量對(duì)象。但是,我們將字符串對(duì)象作為元素而不是數(shù)字對(duì)象傳遞,如下所示:

string_tensor = tf.constant(["With this", 
                             "code, I am", 
                             "creating a String Tensor"])

print(string_tensor)
Output:
tf.Tensor([b'With this' 
           b'code, I am' 
           b'creating a String Tensor'],
  shape=(3,), dtype=string)
稀疏張量

最后,稀疏張量是稀疏數(shù)據(jù)的矩形張量。當(dāng)數(shù)據(jù)中有空值時(shí),稀疏張量就是對(duì)象。創(chuàng)建稀疏張量有點(diǎn)耗時(shí),應(yīng)該更主流一些。這里有一個(gè)例子:

sparse_tensor = tf.sparse.SparseTensor(indices=[[0, 0], [2, 2], [4, 4]], 
                                       values=[25, 50, 100], 
                                       dense_shape=[5, 5])

# 我們可以把稀疏張量轉(zhuǎn)換成密集張量
print(tf.sparse.to_dense(sparse_tensor))
Output:
tf.Tensor( [[ 25   0   0   0   0]
            [  0   0   0   0   0]
            [  0   0  50   0   0]
            [  0   0   0   0   0]
            [  0   0   0   0 100]], shape=(5, 5), dtype=int32)

看完上述內(nèi)容,你們對(duì)掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前文章:掌握Tensorflow的Tensor5個(gè)簡(jiǎn)單的步驟分別是什么
文章位置:http://weahome.cn/article/jgedcg.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部