TensorFlow2 0(4) 填充與複製

2022-05-08 13:30:13 字數 2226 閱讀 7859

1 tf.pad()

tf.pad()函式主要是用來對tensor的大小進行擴充套件,包括水平、垂直、深度(通道)等,方法定義如下:

pad(tensor,paddings,mode="constant",name=none,constant_values=0)

輸入引數:

tensor:輸入的tensor

paddings:設定填充的大小

mode:填充方式,預設是constant,還有reflect和symmetric

name:名稱

constant_values:constant填充方式的填充值,預設為0

引數paddings必須是形狀為(n,2)的乙個list,這裡的n是tensor的秩,也就是維度大小。例如當tensor為乙個shape為(12,)的tensor時,paddings必須是形如[x,y]的乙個list,x表示在第一維度前填充值的個數,y表示在第一維度後填充值的個數。

import tensorflow as tf

a = tf.range(1,13)

a

tf.pad(a,[[3,0]])     # 3表示在第一維度前填充3個0,0表示不填充

當tensor是二維時,paddings必須是shape為(2,2)的list。

a = tf.reshape(a,[3,4])

a

tf.pad(a,[[1,1],[3,0]],constant_values=3)  # 在第一維度前後各填充一行,第二維度前填充兩行,後不填充,填充值為3

對於3維tensor,paddings是乙個shape為(3,2)的list。

a = tf.reshape(a,[2,2,3])

a

tf.pad(a,[[1,0],[1,1],[1,0]])  # 第一維度前填充1塊資料,後不填充,第二維度前後各填充1行,第三維度前填充一列,後不填充

a = tf.range(1,13)

a = tf.reshape(a,[3,4])

a

當指定填充模式mode為'reflect'時,指的是以各維度邊緣為對稱軸進行填充(不包括邊緣資料,也就是對稱軸本身),且填充的規模不能大於該維度原有規模-1。

tf.pad(a,[[2,1],[3,1]],mode='reflect')  # 對第二維度填充時,如果大於3就會產生異常,因為3已經可以把第二維度所有資料複製一遍

symmetric填充模式與reflect填充模式一樣,都是以邊緣為對稱軸進行賦值填充,不過symmetric模式會對對稱軸進行賦值,所以指定的規模最大可以為原規模。

tf.pad(a,[[2,1],[4,1]],mode='symmetric')  # 這時候對第二維度填充規模可以為4,但是超過4就會產生異常

2 tile()

tile()方法對指定維度進行複製,定義如下:

tile(input,multiples,name=none):

input:需要複製的tensor

multiples:各維度需要複製的次數,0表示去除資料,1表示不複製,2表示複製一次

引數multiples是乙個長度與tensor的秩相等的list,例如當tensor的shape為(12,)時,multiples的shape也必須為只有乙個元素的list,例如multiples=[2],表示對第一維度複製一次。

a = tf.range(12)

tf.tile(a,[2])

當tensor的shape為(3,4)時,multiples是乙個包含兩個元素的list。

a = tf.reshape(a,[3,4])

tf.tile(a,[2,3]) # 第一維度複製1次,第二維度複製2次

當tensor的shape為(2,2,3)時,multiples是乙個包含3個元素的list。

a = tf.reshape(a,[2,2,3])

tf.tile(a,[2,1,2])

204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 這個題目思路很簡單,但是可能效率不高,裡面有一些小trick需要注意,所以在這裡記錄一下優化過程。思路1 逐個判斷每個數是否質數,超時 class solution d...

204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 判斷質數的常規解法 如判斷n是否為質數,只需要判斷n是否能整除2 int sqrt n 厄拉多塞篩法 比如說求20以內質數的個數,首先0,1不是質數.2是第乙個質數,然...

204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 埃拉託色尼篩選法,迴圈中置對應值的倍數為0,最後統計為1的個數,也就是質數的個數。class solution def countprimes self,n int i...