TensorFlow2基本操作之合并分割與統(tǒng)計(jì)
合并與分割
tf.concat
tf.concat
可以幫助我們實(shí)現(xiàn)拼接操作.
格式:
tf.concat( values, axis, name='concat' )
參數(shù):
- values: 一個(gè) tensor 或 tensor list
- axis: 操作的維度
- name: 數(shù)據(jù)名稱, 默認(rèn)為 “concat”
例子:
part_1 = tf.zeros([5, 3]) print(part_1) part_2 = tf.ones([5, 3]) print(part_2) # 豎向拼接 result_1 = tf.concat([part_1, part_2], axis=0) print(result_1) # 橫向拼接 result_2 = tf.concat([part_1, part_2], axis=1) print(result_2)
輸出結(jié)果:
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(10, 3), dtype=float32)
tf.Tensor(
[[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 1. 1.]], shape=(5, 6), dtype=float32)
tf.stack
rf.stack
可以創(chuàng)建一個(gè)新的維度來(lái)合并兩個(gè)張量.
格式:
tf.stack( values, axis=0, name='stack' )
參數(shù):
- values: 一個(gè) tensor list
- axis: 操作的維度
- name: 數(shù)據(jù)名稱, 默認(rèn)為 “stack”
例子:
part_1 = tf.zeros([5, 3]) print(part_1) part_2 = tf.ones([5, 3]) print(part_2) # 頭拼接 result_1 = tf.stack([part_1, part_2], axis=0) print(result_1) # 尾拼接 result_2 = tf.stack([part_1, part_2], axis=2) print(result_2)
輸出結(jié)果:
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(5, 3), dtype=float32)
tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]][[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
tf.Tensor(
[[[0. 1.]
[0. 1.]
[0. 1.]][[0. 1.]
[0. 1.]
[0. 1.]][[0. 1.]
[0. 1.]
[0. 1.]][[0. 1.]
[0. 1.]
[0. 1.]][[0. 1.]
[0. 1.]
[0. 1.]]], shape=(5, 3, 2), dtype=float32)
tf.unstack
tf.unstack
是一個(gè)矩陣分解函數(shù).
格式:
# unstack
tf.unstack(
value, num=None, axis=0, name='unstack'
)
參數(shù):
- values: 一個(gè) tensor, 維度大于 0
- num: 軸的長(zhǎng)度
- axis: 操作的維度
- name: 數(shù)據(jù)名稱, 默認(rèn)為 “unstack”
例子:
a = tf.stack([tf.zeros([5, 3]), tf.ones([5, 3])], axis=0) print(a) b = tf.unstack(a, axis=0) print(b)
輸出結(jié)果:
tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]][[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
[<tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]], dtype=float32)>, <tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=float32)>]
tf.split
tf.split()
可以把一個(gè)張量劃分為幾個(gè)子張量.
格式:
tf.split( value, num_or_size_splits, axis=0, num=None, name='split' )
參數(shù):
- value: 待切分的張量
- num_or_size_splits: 切成幾份
- axis: 操作的維度
- num: num_or_size_splits 不能實(shí)現(xiàn)的情況下使用
- name: 數(shù)據(jù)名稱, 默認(rèn)為 “split”
例子:
# split a = tf.stack([tf.zeros([5, 3]), tf.ones([5, 3])], axis=0) print(a) b = tf.split(a, 2) print(b)
輸出結(jié)果:
tf.Tensor(
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]][[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]], shape=(2, 5, 3), dtype=float32)
[<tf.Tensor: shape=(1, 5, 3), dtype=float32, numpy=
array([[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]], dtype=float32)>, <tf.Tensor: shape=(1, 5, 3), dtype=float32, numpy=
array([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]], dtype=float32)>]
數(shù)據(jù)統(tǒng)計(jì)
tf.norm
tf.norm
可以幫助我們計(jì)算向量, 矩陣, 張量的范數(shù).
格式:
tf.norm( tensor, ord='euclidean', axis=None, keepdims=None, name=None )
參數(shù):
- tensor: 輸入的張量
- ord: 范數(shù)的順序
- axis: 操作的維度
- keep_dims: 如果為 True, 則 axis 中指定的軸將保持為大小 1
- name: 數(shù)據(jù)名稱
例子:
a = tf.fill([2, 2], 2.0) print(a) # sqrt(2^2 * 4) = sqrt(16) = 4 b = tf.norm(a) print(b) # [2 + 2, 2 + 2] = [4, 4] c = tf.norm(a, ord=1, axis= 0) print(c) # [sqrt(2^2 + 2^2), sqrt(2^2 + 2^2)] = [sqrt(8), sqrt(8)] d = tf.norm(a, ord=2, axis= 0) print(d)
輸出結(jié)果:
tf.Tensor(
[[2. 2.]
[2. 2.]], shape=(2, 2), dtype=float32)
tf.Tensor(4.0, shape=(), dtype=float32)
tf.Tensor([4. 4.], shape=(2,), dtype=float32)
tf.Tensor([2.828427 2.828427], shape=(2,), dtype=float32)
reduce_min/max/mean
計(jì)算一個(gè)張量各個(gè)維度上元素的最小值 / 最大值 / 平均值.
格式:
tf.math.reduce_min / reduce_max / reduce_mean( input_tensor, axis=None, keepdims=False, name=None )
參數(shù):
- input_tensor: 傳入的張量
- axis: 維度, 默認(rèn)計(jì)算所有維度
- keepdims: 如果為真保留維度, 默認(rèn)為 False
- name: 數(shù)據(jù)名稱
例子:
a = tf.reshape(tf.range(9), [3, 3]) print(a) min = tf.reduce_min(a) print(min) max = tf.reduce_max(a) print(max)
輸出結(jié)果:
tf.Tensor(
[[0 1 2]
[3 4 5]
[6 7 8]], shape=(3, 3), dtype=int32)
tf.Tensor(0, shape=(), dtype=int32)
tf.Tensor(8, shape=(), dtype=int32)
argmax / argmin
tf.argmax
/tf.argmin
可以幫我們找到最大 / 最小值所在的索引 (index).
格式:
tf.math.argmax( input, axis=None, output_type=tf.dtypes.int64, name=None )
參數(shù):
- input: 輸入
- axis: 操作的維度
- output_type: 輸出數(shù)據(jù)類型, 默認(rèn)為 int64
- name: 數(shù)據(jù)名稱
例子:
# argmax / argmin a = tf.reshape(tf.range(9), [3, 3]) print(a) max = tf.argmax(a) print(max) min = tf.argmin(a) print(min)
輸出結(jié)果:
tf.Tensor(
[[0 1 2]
[3 4 5]
[6 7 8]], shape=(3, 3), dtype=int32)
tf.Tensor([2 2 2], shape=(3,), dtype=int64)
tf.Tensor([0 0 0], shape=(3,), dtype=int64)
tf.equal
tf.equal
可以幫助我們判斷兩個(gè)張量是否相等. 返回 True / False.
格式:
tf.math.equal( x, y, name=None )
例子:
a = tf.zeros(5, dtype=tf.float32) print(a) b = tf.range(5, dtype=tf.float32) print(b) print(tf.equal(a, b))
輸出結(jié)果:
tf.Tensor([0. 0. 0. 0. 0.], shape=(5,), dtype=float32)
tf.Tensor([0. 1. 2. 3. 4.], shape=(5,), dtype=float32)
tf.Tensor([ True False False False False], shape=(5,), dtype=bool)
tf.unique
tf.unique
可以幫我們找出張量中不重復(fù)的值
格式:
tf.unique( x, out_idx=tf.dtypes.int32, name=None )
參數(shù):
- input: 輸入
- output_type: 輸出數(shù)據(jù)類型, 默認(rèn)為 int32
- name: 數(shù)據(jù)名稱
例子:
a = tf.range(5) print(tf.unique(a)) b = tf.constant([4, 2, 2, 4, 3]) print(tf.unique(b))
輸出結(jié)果:
Unique(y=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])>, idx=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 2, 3, 4])>)
Unique(y=<tf.Tensor: shape=(3,), dtype=int32, numpy=array([4, 2, 3])>, idx=<tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 1, 1, 0, 2])>)
到此這篇關(guān)于一小時(shí)學(xué)會(huì)TensorFlow2基本操作之合并分割與統(tǒng)計(jì)的文章就介紹到這了,更多相關(guān)TensorFlow2合并分割與統(tǒng)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)TensorFlow簡(jiǎn)介常用基本操作教程
這篇文章主要介紹了python神經(jīng)網(wǎng)絡(luò)入門(mén)TensorFlow簡(jiǎn)介常用基本操作教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11pandas 使用merge實(shí)現(xiàn)百倍加速的操作
這篇文章主要介紹了pandas 使用merge實(shí)現(xiàn)百倍加速的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Python中命令行參數(shù)argparse模塊的使用
argparse是python自帶的命令行參數(shù)解析包,可以用來(lái)方便的服務(wù)命令行參數(shù)。本文將通過(guò)示例和大家詳細(xì)講講argparse的使用,需要的可以參考一下2023-02-02如何將自己的python代碼發(fā)布在pip install給別人使用你知道嗎
這篇文章主要介紹了python如何發(fā)布自已的pip項(xiàng)目,方便大家學(xué)習(xí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-08-08pyecharts如何實(shí)現(xiàn)顯示數(shù)據(jù)為百分比的柱狀圖
這篇文章主要介紹了pyecharts如何實(shí)現(xiàn)顯示數(shù)據(jù)為百分比的柱狀圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11用xpath獲取指定標(biāo)簽下的所有text的實(shí)例
今天小編就為大家分享一篇用xpath獲取指定標(biāo)簽下的所有text的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python入門(mén)教程(四十三)Python的NumPy數(shù)據(jù)類型
這篇文章主要介紹了Python入門(mén)教程(四十二)Python的NumPy數(shù)組裁切,NumPy有一些額外的數(shù)據(jù)類型,并通過(guò)一個(gè)字符引用數(shù)據(jù)類型,例如 i 代表整數(shù),u 代表無(wú)符號(hào)整數(shù)等,需要的朋友可以參考下2023-05-05用Python進(jìn)行TCP網(wǎng)絡(luò)編程的教程
這篇文章主要介紹了用Python進(jìn)行TCP網(wǎng)絡(luò)編程的教程,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04