日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【TensorFlow2.0】(2) 创建tensor的方法

發布時間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【TensorFlow2.0】(2) 创建tensor的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

各位同學好,今天和大家分享一下TensorFlow2.0中的tensor變量的創建方法。內容有:

(1) 通過numpy和list創建tensor;(2) 創建全部為某個值的tensor;(3) 隨機化創建:正態分布、均勻分布;(4) 重新洗牌;(5) tf.constant()

那我們開始吧。


1. 通過numpy和list創建tensor

方法: tf.convert_to_tensor(value, dtype=None)

np.ones([2,3]) 使用numpy創建2行3列全為1的數組,將該數組全部變成tensor類型,指定數據類型維tf.float32

import tensorflow as tf
import numpy as np
#(1)通過numpy和list創建tensor
# 將2行3列全為1的numpy類型數據轉換成tensor類型,原數據類型為float32
tf.convert_to_tensor(np.ones([2,3]),dtype=tf.float32)# 將2行3列全為0的numpy類型數據轉換成tensor類型,類型為float64
tf.convert_to_tensor(np.zeros([2,3]))

創建一個一維列表[2,3],和一個二維列表[[2],[2.]],轉換成tensor類型

注意:此處的convert_to_tensor([2,3]) 括號內代表data一維數組[2,3],一定要和下面第2、3節的方法區分開

# 將1維列表變成tensor類型,int32
tf.convert_to_tensor([2,3])  #得到1維長度為2的tensor
# 將2維列表變成tensor類型,float32
tf.convert_to_tensor([[2],[2.]])


2. 創建全為某種值的tensor

2.1 創建全為0的tensor

方法: tf.zeros([shape])

注意:這里的 tf.zeros([ ])括號里填的是形狀shape;而上一節中的列表轉tensor括號里面是一維數組。

# ==1== 初始化為0的tensor
tf.zeros([])  # 只有一個數字0  
# ==2== 創建一個1維的,長度為2,元素全為0的tensor
tf.zeros([2])  # 一維,長度維2,全0
# ==3== 創建m行n列全為0的tensor
tf.zeros([2,3]) # 2行3列,全0
# ==4== 創建三維tensor,全為0的tensor
tf.zeros([2,3,4]) 

根據輸入的tensor變量的shape來創建一個全為0的tensor

方法:?tf.zeros_like(tensor變量)

等同于:?tf.zeros(tensor變量.shape)

a = tf.zeros([2,3])  #a的shape是2行3列
# 法一:
tf.zeros_like(a)     #創建一個2行3列全0的tensor
# 法二:
tf.zeros(a.shape)  


2.2 創建全為1的tensor

方法:?tf.ones([shape])

# 創建只有數字1的tensor
tf.ones([])   
# 創建一個1維的,長度維2,只有數字1的tensor
tf.ones(2)    
# 創建一個1維的長度為2的全為1的tensor
tf.ones([2])  
#創建2行3列全為1的tensor
tf.ones([2,3]) 

根據輸入的tensor變量的shape來創建一個全為1的tensor

方法:?tf.ones_like(tensor變量)

等同于:?tf.ones(tensor變量.shape)

# 根據返回對象的shape創建全為1的tensor
a = tf.ones([1,3])  #2維全0的tensor
tf.ones_like(a)
tf.ones_like(a.shape)


2.3 全為某元素的tensor

方法: tf.fill([shape], 元素)

用某個元素填充指定形狀

# 這個tensor標量,只有一個值1.2
tf.fill([],1.2) 
# 創建1維長度為3的tensor向量,以1.2填充
tf.fill([3],1.2)  
# 創建2維的2行2列的tensor矩陣,以1.2填充
tf.fill([2,2],1.2)  


3. 隨機化初始

3.1 正態分布初始

方法: tf.random.normal(shape, mean=0, stddev=1, dtype=None, seed=None)

shape?張量的形狀shape,必選

mean 正態分布的均值,默認為0

stddev 正態分布的標準差,默認為1.0

dtype 輸出的類型,默認為tf.float32

seed隨機數種子,是一個整數1,2,當設置之后,每次生成的隨機數都一樣

# 創建一個2行2列的tensor,每個元素滿足均值為1,標準差為1的正態分布
tf.random.normal([2,2],mean=1,stddev=1)


3.2 截斷正態分布初始

方法: tf.random.truncated_normal()

在原來分布的基礎上,截去某一部分元素,限制變量x的取值范圍。后續可以優化sigmoid函數。

正態分布則可視為不進行任何截斷的截斷正態分布,也即自變量的取值為負無窮到正無窮。

# 創建一個2行2列的tensor,每個元素滿足均值為0,標準差為1的截斷正態分布
tf.random.truncated_normal([2,2],mean=0,stddev=1)


3.3 均勻分布

方法:?tf.random.uniform(shape, minval, maxval, dtype=None, seed=None)

shape:?輸出張量的形狀。

minval:?生成的隨機值范圍的下限。默認為0。

maxval:?要生成的隨機值范圍的上限。若dtype是浮點類型,默認是1。

dtype:?輸出的類型,默認 tf.float32

seed:??整數,當設置之后,每次生成的隨機數都一樣。

tensor中每個元素的范圍在最小值和最大值之間,包含最小值,不包含最大值

# 每個元素都是[0,1)之間隨機采樣,生成2行2列的tensor
tf.random.uniform([2,2]) 
# 每個元素都是從1,10之間隨機采用,整型
tf.random.uniform([2,2],minval=1,maxval=10,dtype=tf.int32)


4. 重新洗牌

對一組數據隨機重新排序,可用于打散有相對關系的兩組數據

方法:?tf.random.shuffle(value,seed=None)

idx = tf.range(10)  #一維tensor,包含0-9的10個數
tf.random.shuffle(idx)  #對a重新洗牌


5. tf.constant() 方法

將輸入的標量、列表、矩陣變成指定數據類型的tensor

方法: tf.constant(value, dtype=None, shape=None, verify_shape=False)

value 數值、列表、矩陣

dtype 指定數據類型

shape形狀,指維數以及每一維的大小。當value是數字時,張量的所有元素都會用該數字填充。當value是一個列表時,注意列表的長度必須小于等于shape的大小(即各維大小的乘積)

verify_shape如果修改為True的話,表示檢查value的形狀與shape是否相符,符合就輸出結果,如果不符會報錯。

#傳入一個標量,2行2列全為1
tf.constant(1,shape=[2,2]) #傳入一個列表,指定數據類型
tf.constant([1,2.],dtype=tf.float32) 
#傳入一個矩陣,判斷這個矩陣是否是2行2列
tf.constant([[1.1,2.2],[3.3,4.4]],shape=[2,2])  

總結

以上是生活随笔為你收集整理的【TensorFlow2.0】(2) 创建tensor的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。