国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 淺談tensorflow中張量的提取值和賦值

淺談tensorflow中張量的提取值和賦值

2020-04-12 13:06信道者 Python

今天小編就為大家分享一篇淺談tensorflow中張量的提取值和賦值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

tf.gather和gather_nd從params中收集數(shù)值,tf.scatter_nd 和 tf.scatter_nd_update用updates更新某一張量。嚴格上說,tf.gather_nd和tf.scatter_nd_update互為逆操作。

已知數(shù)值的位置,從張量中提取數(shù)值:tf.gather, tf.gather_nd

tf.gather indices每個元素(標量)是params某個axis的索引,tf.gather_nd 中indices最后一個階對應于索引值。

tf.gather函數(shù)

函數(shù)原型

?
1
2
3
4
5
6
7
gather(
 params,
 indices,
 validate_indices=None,
 name=None,
 axis=0
)

params是要查找的張量,indices是要查找值的索引(int32或int64),axis是查找軸,name是操作名。

如果indices是標量

淺談tensorflow中張量的提取值和賦值

如果indices是向量

淺談tensorflow中張量的提取值和賦值

如果indices是高階張量

淺談tensorflow中張量的提取值和賦值

返回值:

該函數(shù)返回值類型與params相同,具體值是從params中收集過來的,形狀為

淺談tensorflow中張量的提取值和賦值

tf.gather_nd函數(shù)

函數(shù)原型

?
1
2
3
4
5
gather_nd(
 params,
 indices,
 name=None
)

indices是K階張量,包含K-1階的索引值。它最后一階是索引,最后一階維度必須小于等于params的秩。indices最后一階的維數(shù)等于params的秩時,我們得到params的某些元素;indices最后一階的維數(shù)小于params的秩時,我們得到params的切片。

淺談tensorflow中張量的提取值和賦值

輸出張量的形狀由indices的K-1階和params索引到的形狀拼接而成,如下面

?
1
indices.shape[:-1] + params.shape[indices.shape[-1]:]

參數(shù):

params:被收集的張量。

indices:索引張量。必須是以下類型之一:int32,int64。

name:操作的名稱(可選)。

返回值:

該函數(shù)返回一個張量.與params具有相同的類型。張量值從indices所給定的索引中收集,并且具有這樣的形狀:

淺談tensorflow中張量的提取值和賦值

已知賦值的位置,向張量賦值:tf.scatter_nd, tf.scatter_nd_update

tf.scatter_nd對零張量進行賦值,tf.scatter_nd_update對已有可變的張量進行賦值。

?
1
2
3
4
5
6
7
tf.scatter_nd函數(shù)
scatter_nd(
 indices,
 updates,
 shape,
 name=None
)

創(chuàng)建一個形狀為shape的零張量,將updates賦值到indices指定的位置。

indices是整數(shù)張量,最內(nèi)部維度對應于索引。

?
1
indices.shape[-1] <= shape.rank

如果indices.shape[-1] = shape.rank,那么indices直接對應到新張量的單個元素。如果indices.shape[-1] < shape.rank,那么indices中每個元素對新張量做切片操作。updates的形狀應該如下所示

?
1
indices.shape[:-1] + shape[indices.shape[-1]:]

如果我們要把形狀為(4,)的updates賦值給形狀為(8,)的零張量,如下圖所示。

淺談tensorflow中張量的提取值和賦值

我們需要這樣子做

?
1
2
3
4
5
6
indices = tf.constant([[4], [3], [1], [7]])
updates = tf.constant([9, 10, 11, 12])
shape = tf.constant([8])
scatter = tf.scatter_nd(indices, updates, shape)
with tf.Session() as sess:
 print(sess.run(scatter))

我們得到這樣子的張量

?
1
[0, 11, 0, 10, 9, 0, 0, 12]

上面代碼中,indices的形狀是(4,1),updates的形狀是(4,),shape的形狀是(8,)。

?
1
indices.shape[:-1]+shape[indices.shape[-1]:] = (4,)+(,)=(4,)

如果我們要在三階張量中插入兩個切片,如下圖所示,則應該像下面代碼里所說的那樣子做。

淺談tensorflow中張量的提取值和賦值

?
1
2
3
4
5
6
7
8
9
indices = tf.constant([[0], [2]])
updates = tf.constant([[[5, 5, 5, 5], [6, 6, 6, 6],
   [7, 7, 7, 7], [8, 8, 8, 8]],
   [[5, 5, 5, 5], [6, 6, 6, 6],
   [7, 7, 7, 7], [8, 8, 8, 8]]])
shape = tf.constant([4, 4, 4])
scatter = tf.scatter_nd(indices, updates, shape)
with tf.Session() as sess:
 print(sess.run(scatter))

indices的形狀是(2,1),updates的形狀是(2,4,4),shape的形狀是(4,4,4)。

?
1
indices.shape[:-1]+shape[indices.shape[-1]:]=(2,)+(4,4)=(2,4,4)

我們會得到這樣子的張量

?
1
2
3
4
[[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]

函數(shù)參數(shù)

indices:Tensor;必須是以下類型之一:int32,int64;索引值張量。

updates:Tensor;分散到輸出的更新。

shape:Tensor;必須與indices具有相同的類型;1-d;得到的張量的形狀。

name:操作的名稱(可選)。

返回值

此函數(shù)返回一個Tensor,它與updates有相同的類型;一個有shape形狀的新張量,初始化值為0,部分值根據(jù)indices用updates進行更新。

tf.scatter_nd_update函數(shù)

函數(shù)原型

?
1
2
3
4
5
6
7
scatter_nd_update(
 ref,
 indices,
 updates,
 use_locking=True,
 name=None
)

scatter_nd_update也是把updates里面的值根據(jù)indices賦值到另外一個張量中,與scatter_nd不同的是,它是賦值到ref。

ref是秩為P的張量,indices是秩為Q的張量。

indices是整數(shù)類型的張量,必須具有這樣的形狀淺談tensorflow中張量的提取值和賦值 。

indices最內(nèi)部的維度對應于ref的某個元素或切片。

updates的形狀是淺談tensorflow中張量的提取值和賦值 ,是秩為Q-1+P-K的張量。

如果我們想要把(4,)的向量賦值到(8,)的ref中,我們可以像下面這樣子操作。

?
1
2
3
4
5
6
ref = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8])
indices = tf.constant([[4], [3], [1] ,[7]])
updates = tf.constant([9, 10, 11, 12])
update = tf.scatter_nd_update(ref, indices, updates)
with tf.Session() as sess:
 print sess.run(update)

我們可以得到這樣的ref

?
1
[1, 11, 3, 10, 9, 6, 7, 12]

函數(shù)參數(shù)

ref:一個可變的Tensor。

indices:一個 int32 或 int64 Tensor;一個對ref進行索引的張量.

updates:一個Tensor.必須與ref具有相同的類型;更新值張量.

use_locking:可選的bool;如果為True,則賦值將受鎖定的保護;否則行為是不確定的,但可能表現(xiàn)出較少的爭用.

name:操作的名稱(可選).

返回值:

經(jīng)過更新的ref。

以上這篇淺談tensorflow中張量的提取值和賦值就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/chr1991/article/details/93474638

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 免费大片黄在线观看 | 精品国产一区二区三区免费 | 欧美日韩精品在线观看 | 欧美视频在线一区 | 国产黄免费 | 四虎永久免费 | 久久精品中文字幕一区二区 | 精品久久久久久亚洲综合网 | 欧美怡红院视频一区二区三区 | www.夜夜爽| 91免费版在线观看 | 久久品 | 爱爱网址 | 中文字幕免费 | 亚洲国内精品 | 亚洲欧美在线免费 | 亚洲精品一区二区 | 中文字幕一区二区三区乱码在线 | 国产精品日韩在线观看 | 日韩免费av一区二区 | 中文字幕一区二区三区乱码图片 | 最近2019中文字幕大全视频10 | 久久久精品日本 | 婷婷国产精品 | 亚洲精品一区二区三区在线观看 | 亚洲国产精品久久久 | 中文字幕精品一区 | 成人精品视频 | 日韩视频精品在线观看 | 成人h漫在线观看 | 一区二区中文 | 人人鲁人人莫一区二区三区 | 国产一区二区在线免费观看 | 日韩不卡一区二区 | 欧美一级片 | 天天操,夜夜操 | 99热在线播放 | 免看一级一片 | 亚洲欧美自拍偷拍 | 久草视频在线播放 | 精品日韩一区 |