基于tf.shape(tensor)和tensor.shape()的區(qū)別說(shuō)明
#tf.shape(tensor)和tensor.shape()的區(qū)別
a=tf.zeros([4,5,4,5,6]) print(type(a.shape)) print(a.shape.ndims)#多少個(gè)維度 print(a.shape.as_list())#返回列表 print(type(tf.shape(a))) print(type(tf.shape(a)[0])) b=a.shape.as_list() c=tf.shape(a) b[1]=tf.shape(a)[1] print(b) sess=tf.Session() d=sess.run(c) print(d)
outputs: <class 'tensorflow.python.framework.tensor_shape.TensorShape'> 5 [4, 5, 4, 5, 6] <class 'tensorflow.python.framework.ops.Tensor'> <class 'tensorflow.python.framework.ops.Tensor'> [4, <tf.Tensor 'strided_slice_1:0' shape=() dtype=int32>, 4, 5, 6] [4 5 4 5 6]
其中tf.shape(tensor)使用的是動(dòng)態(tài)的,即必須要在session中運(yùn)行后才能顯示出來(lái),但是tensor.shape()是靜態(tài)的,即通過(guò)定義的shape可以驚天的運(yùn)行出來(lái)。
原因:在我們定義的時(shí)候,比如進(jìn)行placeholder的時(shí)候我們可能會(huì)定義某些維度為None,在靜態(tài)的時(shí)候是看不出來(lái)的,只能在運(yùn)行的時(shí)候找到維度。
**使用:**可以在獲得某些tensor的維度的時(shí)候進(jìn)行檢驗(yàn),防止維度為None。
補(bǔ)充知識(shí):tensorflow.python.framework.tensor_shape.TensorShape 類
TensorShape 是tensorflow中關(guān)于張量shape的類(class).
使用示例如下:
import tensorflow.compat.v1 as tf from tensorflow.python.framework import tensor_shape from tensorflow.python.framework import constant_op tensor_test1=[10,10,10] tensor_test2 = [None,10,10] p1 = tensor_shape.as_shape(tensor_test1) # 得到的是一個(gè)類實(shí)例,該類實(shí)例包含一個(gè)屬性,是 tensor_test1 的value const = constant_op.constant(p1.as_list()) print("type(p1) = ",type(p1)) print("p1 = ",p1) # 使用p1時(shí)會(huì)自動(dòng)調(diào)用p1中的value屬性 print("p1.is_fully_defined() = ",p1.is_fully_defined())# is_fully_defined 是 TensorShape 類的一個(gè)內(nèi)部函數(shù) print("p1.ndims = ",p1.ndims) # ndims 也是TensorShape的一個(gè)屬性值 print("p1.as_list() = ",p1.as_list()) # 把TensorShape的value屬性轉(zhuǎn)換成python中的list類型 print("const = ",const)
結(jié)果如下:
type(p1) = <class 'tensorflow.python.framework.tensor_shape.TensorShape'> p1 = (10, 10, 10) p1.is_fully_defined() = True p1.ndims = 3 p1.as_list() = [10, 10, 10] const = Tensor("Const:0", shape=(3,), dtype=int32)
以上這篇基于tf.shape(tensor)和tensor.shape()的區(qū)別說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)機(jī)械分詞之逆向最大匹配算法代碼示例
這篇文章主要介紹了python實(shí)現(xiàn)機(jī)械分詞之逆向最大匹配算法代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12使用Django實(shí)現(xiàn)文章與多個(gè)標(biāo)簽關(guān)聯(lián)的示例詳解
在構(gòu)建一個(gè)博客或內(nèi)容管理系統(tǒng)時(shí),經(jīng)常需要實(shí)現(xiàn)文章與標(biāo)簽的關(guān)聯(lián),在 Django 中,我們可以利用 ManyToManyField 來(lái)實(shí)現(xiàn)文章與標(biāo)簽的多對(duì)多關(guān)系,在本文中,我們將詳細(xì)探討如何使用 Django 模型實(shí)現(xiàn)文章與多個(gè)標(biāo)簽的關(guān)聯(lián),需要的朋友可以參考下2023-11-11Python利用memory_profiler查看內(nèi)存占用情況
memory_profiler是第三方模塊,用于監(jiān)視進(jìn)程的內(nèi)存消耗以及python程序內(nèi)存消耗的逐行分析。本文將利用memory_profiler查看代碼運(yùn)行占用內(nèi)存情況,感興趣的可以了解一下2022-06-06給Python學(xué)習(xí)者的文件讀寫(xiě)指南(含基礎(chǔ)與進(jìn)階)
今天,貓貓跟大家一起,好好學(xué)習(xí)Python文件讀寫(xiě)的內(nèi)容,這部分內(nèi)容特別常用,掌握后對(duì)工作和實(shí)戰(zhàn)都大有益處,學(xué)習(xí)是循序漸進(jìn)的過(guò)程,欲速則不達(dá)2020-01-01Python實(shí)現(xiàn)PS圖像明亮度調(diào)整效果示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS圖像明亮度調(diào)整效果,結(jié)合實(shí)例形式分析了Python基于skimage模塊調(diào)整圖片明亮度的原理與具體操作技巧,需要的朋友可以參考下2018-01-01夯實(shí)基礎(chǔ)Python列表的索引和切片使用示例
這篇文章主要為大家介紹了Python列表的索引和切片使用示例基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Django實(shí)現(xiàn)微信小程序支付的示例代碼
這篇文章主要介紹了Django實(shí)現(xiàn)微信小程序支付的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python趣味編程實(shí)現(xiàn)手繪風(fēng)視頻示例
本文與計(jì)算機(jī)視覺(jué)相關(guān),使用Python將圖片由自然風(fēng)轉(zhuǎn)化為手繪風(fēng),期間未對(duì)圖片進(jìn)行任何預(yù)處理、后處理;代碼中只借助了兩個(gè)常見(jiàn)庫(kù),核心計(jì)算由Numpy負(fù)責(zé) ,Pillow 負(fù)責(zé)圖片讀寫(xiě)2021-10-10