網(wǎng)站首頁 編程語言 正文
獲取tensor()數(shù)據(jù)類型的值
一、問題
只想要216.8973那個(gè)數(shù)。
二、解決方法
1、單個(gè)tensor
tensor.item()
就可以得到216.8973。
2、多個(gè)tensor
tensor.tolist()
?
完美解決~
tensorflow筆記:tensor數(shù)據(jù)類型
常見的數(shù)據(jù)類型載體
list
np.array
tf.tensor
-
list
: 可以存儲(chǔ)不同數(shù)據(jù)類型,缺點(diǎn)不適合存儲(chǔ)較大的數(shù)據(jù),如圖片 -
np.array
: 解決同類型大數(shù)據(jù)數(shù)據(jù)的載體,方便數(shù)據(jù)運(yùn)算,缺點(diǎn)是在深度學(xué)習(xí)之前就設(shè)計(jì)好的,不支持GPU -
tf.tensor
:更適合深度學(xué)習(xí),支持GPU
Tensor是什么
-
scalar
: 1.1 -
vector
:[1.1] , [1.1,2.2,……] -
matrix
:[[1,2,3,],[4,5,6],[7,8,9]] -
torsor
:rank > 2 (一般指的是維度大于2的數(shù)據(jù))
但是,在tensorflow里面我們把數(shù)據(jù)的數(shù)據(jù)都叫tensor
Tensor支持的類型
-
int
,float
,double
bool
string
創(chuàng)建不同類型的Tensor
import tensorflow as tf # 創(chuàng)建一個(gè)整型的數(shù)據(jù) tf.constant(1) # Out[3]: <tf.Tensor: shape=(), dtype=int32, numpy=1> # 注意因?yàn)檫@里的constant就是一個(gè)普通的tensor,不要理解為常量了(TF1.0是代表一個(gè)常量) # 創(chuàng)建一個(gè)浮點(diǎn)類型的數(shù)據(jù) tf.constant(1.) # Out[4]: <tf.Tensor: shape=(), dtype=float32, numpy=1.0> # 若給定一個(gè)浮點(diǎn)型的數(shù)據(jù),但是指定為int類型會(huì)報(bào)錯(cuò) tf.constant(2.2,dtype=tf.int32) # TypeError: Cannot convert 2.2 to EagerTensor of dtype int32 # 給一數(shù)指定雙精度 tf.constant(2.,dtype=tf.double) # Out[6]: <tf.Tensor: shape=(), dtype=float64, numpy=2.0> # 創(chuàng)建bool類型的數(shù)據(jù) tf.constant([True,False]) # Out[7]: <tf.Tensor: shape=(2,), dtype=bool, numpy=array([ True, False])> # 創(chuàng)建字符串型數(shù)據(jù)(很少用) tf.constant("hello,world") # Out[8]: <tf.Tensor: shape=(), dtype=string, numpy=b'hello,world'>
Tensor Property
下面開始介紹Tensor常用的屬性
tf.device
import tensorflow as tf with tf.device("cpu"): a = tf.constant([1]) with tf.device("gpu"): b = tf.range(6) print(a.device) print(b.device) # 數(shù)據(jù)在CPU和GPU上的轉(zhuǎn)換 aa = a.gpu() print(aa.device) bb = b.cpu() print(bb.device)
輸出結(jié)果:
/job:localhost/replica:0/task:0/device:CPU:0
/job:localhost/replica:0/task:0/device:GPU:0
/job:localhost/replica:0/task:0/device:GPU:0
/job:localhost/replica:0/task:0/device:CPU:0
轉(zhuǎn)換為numpy
c = tf.range(10) #Out[14]: <tf.Tensor: shape=(10,), dtype=int32, numpy=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])> c.numpy() #Out[15]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])?
Tensor的維度與形狀
d = tf.range(10) d.shape # Out[17]: TensorShape([10]) d.ndim # Out[18]: 1 # 用rank查看tensor的維度(秩):返回的是一個(gè)tensor類型的數(shù)據(jù) tf.rank(d) # Out[19]: <tf.Tensor: shape=(), dtype=int32, numpy=1> tf.rank(tf.ones([3,4,2])) # Out[20]: <tf.Tensor: shape=(), dtype=int32, numpy=3> # tf.name # 是Tensorflow1.0中的概念,現(xiàn)在基本已經(jīng)淘汰了
python中判斷一個(gè)數(shù)據(jù)是不是Tensor
import numpy as np import tensorflow as tf a = tf.constant(1.) b = tf.constant([True,False]) c = tf.constant("hello,world") d = np.arange(4) isinstance(a,tf.Tensor) # Out[27]: True tf.is_tensor(b) # Out[28]: True tf.is_tensor(d) # Out[29]: False a.dtype,b.dtype,c.dtype,d.dtype # Out[32]: (tf.float32, tf.bool, tf.string, dtype('int32')) a.dtype == tf.float32 Out[33]: True c.dtype == tf.string Out[34]: True
數(shù)據(jù)類型的轉(zhuǎn)換
a = np.arange(5) a.dtype Out[36]: dtype('int32') aa = tf.convert_to_tensor(a) ?# numpy數(shù)據(jù)轉(zhuǎn)化方法為.astype(np.int64) # Out[38]: <tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])> aa = tf.convert_to_tensor(a, dtype=tf.float32) # Out[40]: <tf.Tensor: shape=(5,), dtype=float32, numpy=array([0., 1., 2., 3., 4.], dtype=float32)> # 用頭tf.cast()數(shù)據(jù)轉(zhuǎn)化 tf.cast(aa,dtype = tf.float32) # Out[41]: <tf.Tensor: shape=(5,), dtype=float32, numpy=array([0., 1., 2., 3., 4.], dtype=float32)> aaa = tf.cast(aa,dtype=tf.double) # Out[43]: <tf.Tensor: shape=(5,), dtype=float64, numpy=array([0., 1., 2., 3., 4.])> tf.cast(aaa,dtype=tf.int32) # Out[44]: <tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])> # bool 與 int 的轉(zhuǎn)化 b = tf.constant([0,1]) tf.cast(b,tf.bool) # Out[46]: <tf.Tensor: shape=(2,), dtype=bool, numpy=array([False, ?True])> bb = tf.cast(b,dtype=tf.bool) tf.cast(bb,tf.int32) # Out[48]: <tf.Tensor: shape=(2,), dtype=int32, numpy=array([0, 1])>
tf.Variable
tf.Variable在tensorflow中相比tf.constan一樣也是Tensor,tf.Variable特指Tensorflow中哪些可以優(yōu)化的參數(shù),比如自動(dòng)求導(dǎo)。
tf.Variable可以理解為是專門為神經(jīng)網(wǎng)絡(luò)所設(shè)立的一個(gè)類型。
a = tf.range(5) b = tf.Variable(a) # Out[51]: <tf.Variable 'Variable:0' shape=(5,) dtype=int32, numpy=array([0, 1, 2, 3, 4])> b.dtype # Out[52]: tf.int32 b.name # Out[53]: 'Variable:0' b = tf.Variable(a, name = "input_data") b.name # Out[55]: 'input_data:0' b.trainable # Out[56]: True isinstance(b,tf.Tensor) # Out[57]: False isinstance(b,tf.Variable) # Out[58]: True tf.is_tensor(b) # Out[59]: True b.numpy() # Out[60]: array([0, 1, 2, 3, 4])
將Tensor類型轉(zhuǎn)化為python中的數(shù)據(jù)類型
a = tf.ones([]) # Out[63]: <tf.Tensor: shape=(), dtype=float32, numpy=1.0> a.numpy() # Out[64]: 1.0 int(a) # Out[65]: 1 float(a) # Out[66]: 1.0
原文鏈接:https://blog.csdn.net/weixin_45963617/article/details/123093857
相關(guān)推薦
- 2023-01-15 盤點(diǎn)SqlServer?分頁方式和拉姆達(dá)表達(dá)式分頁_MsSql
- 2022-09-17 Python?pandas?重命名索引和列名稱的實(shí)現(xiàn)_python
- 2022-11-26 R語言學(xué)習(xí)筆記之plot函數(shù)_R語言
- 2022-08-20 python?tkinter庫的Text記錄點(diǎn)擊路經(jīng)和刪除記錄詳情_python
- 2022-01-05 npm ERR! code ENOENT npm ERR! syscall open npm ERR
- 2024-03-10 SpringMVC中Model和ModelAndView的區(qū)別
- 2022-04-28 C#圖形編程GDI+基礎(chǔ)介紹_C#教程
- 2022-09-16 windows?dos命令解除端口占用的問題_DOS/BAT
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支