tensorflow之獲取tensor的shape作為max_pool的ksize實(shí)例
實(shí)驗(yàn)發(fā)現(xiàn),tensorflow的tensor張量的shape不支持直接作為tf.max_pool的參數(shù),比如下面這種情況(一個(gè)錯(cuò)誤的示范):
self.max_pooling1 = tf.nn.max_pool(self.l_6, ksize = [1, tf.shape(self.F1)[0], 1, 1], strides = [1, 1, 1, 1], padding = 'VALID', name = 'maxpool1')
我在max_pool的過程中想對(duì)特征每一列進(jìn)行max_pooling,但因?yàn)閠ensor F1張量沒有值,而ksize此處需要一個(gè)int類型的常量,所以tf.shape(self.F1)[0]無法作為ksize的參數(shù)。
一些人的做法是固定行數(shù),比如pointnet固定為2048個(gè)點(diǎn),但這樣做需要重新采樣,過于麻煩。
而既然tensorflow不提供標(biāo)準(zhǔn)的max_pool層實(shí)現(xiàn),其實(shí)可以自己實(shí)現(xiàn)每一列取最大值的操作,充當(dāng)自己的max_pool。如下圖所示:
def max_pooling(self, NC): out = tf.reduce_max(NC, reduction_indices=[0]) return out
利用reduce_max剛好能實(shí)現(xiàn)這個(gè)操作,其中reduction_indices可以指定取哪一維的最大值。這個(gè)函數(shù)的詳細(xì)功能可以參考官方文檔。
這種情況和tf.reshape不同,tf.reshape是可以使用tf.shape(tensor)[i]的,可能兩者對(duì)參數(shù)的要求不一樣。
以上這篇tensorflow之獲取tensor的shape作為max_pool的ksize實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)通訊錄系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)通訊錄系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05淺談Python里面None True False之間的區(qū)別
這篇文章主要介紹了淺談Python里面None True False之間的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python實(shí)現(xiàn)正弦信號(hào)的時(shí)域波形和頻譜圖示例【基于matplotlib】
這篇文章主要介紹了Python實(shí)現(xiàn)正弦信號(hào)的時(shí)域波形和頻譜圖,涉及Python數(shù)學(xué)運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-05-05淺談Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑
這篇文章主要介紹了Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05