精品一区二区三区影院在线午夜_天天躁日日躁狠狠躁AV麻豆_国产午夜福利短视频_中文字幕乱偷无码AV先锋蜜桃_久久精品一二区东京热_国产成人亚洲日韩欧美久久久,国产成人精品久久一区二区三区

tensorflow中tensor的靜態維度和動態維度

tf中使用張量(tensor)這種數據結構來表示所有的數據,可以把張量看成是一個具有n個維度的數組或列表,張量會在各個節點之間流動,參與計算。

張量具有靜態維度和動態維度。

在圖構建過程中定義的張量擁有的維度是靜態維度,這個維度可以被定義為不確定的,例如定義一個tensor的維度是[None,10],表示這個tensor的第一個維度是不確定的,可以是任意的,None 表示具體維度值要在圖運行過程中確定。

在圖運行的時候,張量在圖中各個節點之間流動,此時張量具有的維度是動態維度,依據操作的需要,動態維度是可以動態轉變的,所以tensor的動態維度不是唯一的,但是靜態維度是唯一的(靜態維度可以是形狀不確定的)。

定義張量、設置靜態維度、查詢靜態維度

設置靜態維度使用 set_shape()

查詢靜態維度使用 tensorX.shape.as_list()

# -*- coding:utf-8 -*-
import tensorflow as tf

# 定義一個第一維度不確定的tensor
a = tf.placeholder(tf.float32, [None, 128])
b = tf.placeholder(tf.int32,[2,5,6])

# 查詢張量a的靜態維度
static_shape_a = a.shape.as_list()
static_shape_b = b.shape.as_list()

print static_shape_a,static_shape_b

# 設置張量a的靜態維度,a必須有最少一個維度上是不確定才可以設置靜態維度
a.set_shape([32, 128])
# b聲明的時候3個靜態維度已經是確定的了,再設置b的靜態維度會報錯
# b.set_shape([4,5,3])

# 查詢張量a設置靜態維度后的靜態維度
static_shape_a = a.shape.as_list()

print static_shape_a

輸出:

[None, 128] [2, 5, 6]
[32, 128]

靜態維度可以認為是tensor的原始維度,如果定義tensor時候具體指定了tensor各個維度的具體值,則tensor的靜態維度就是確定的了,不可以再更改靜態維度信息了。 只有當定義tensor的時候至少一個維度上使用了 None,tensor的靜態維度才可以

使用 set_shape()再指定。

改變和查詢動態維度

動態的改變tensor的動態維度使用 tf.reshape()

查詢tensor的動態維度使用 tf.shape()

# -*- coding:utf-8 -*-
import tensorflow as tf

# 定義一個第一維度不確定的tensor
a = tf.placeholder(tf.float32, [None, 128])

# 查詢a的動態維度
dynamic_shape = tf.shape(a)
print dynamic_shape

#改變a的動態維度
a =  tf.reshape(a, [32, 64,2])

# 查詢a的動態維度
dynamic_shape = tf.shape(a)
print dynamic_shape
輸出:
Tensor("Shape:0", shape=(2,), dtype=int32)
Tensor("Shape_1:0", shape=(3,), dtype=int32)
都昌县| 内黄县| 阿瓦提县| 汉寿县| 竹溪县| 二连浩特市| 含山县| 杭锦旗| 长汀县| 神池县| 乌兰浩特市| 青州市| 大同县| 桑日县| 仪征市| 文化| 柘城县| 康乐县| 温州市| 茶陵县| 乌拉特前旗| 象州县| 大理市| 西乡县| 湟中县| 兴仁县| 睢宁县| 忻城县| 陈巴尔虎旗| 文昌市| 富宁县| 霍林郭勒市| 呈贡县| 甘孜| 滦南县| 铁力市| 肇源县| 太白县| 道真| 盈江县| 皮山县|