tensorflow對(duì)圖像進(jìn)行拼接的例子
tensorflow對(duì)圖像進(jìn)行多個(gè)塊的行列拼接tf.concat(), tf.stack()
在深度學(xué)習(xí)過程中,通過卷積得到的圖像塊大小是8×8×1024的圖像塊,對(duì)得到的圖像塊進(jìn)行reshape得到[8×8]×[32×32],其中[8×8]是圖像塊的個(gè)數(shù),[32×32]是小圖像的大小。通過tf.concat對(duì)小塊的圖像進(jìn)行拼接。
-在做圖像卷積的過程中,做了這樣一個(gè)比較麻煩的拼接,現(xiàn)在還沒想到更好的拼接方法,因?yàn)槭菈K拼接,開始的時(shí)候使用了reshape,但是得到的結(jié)果不對(duì),需要確定清楚數(shù)據(jù)的維度,對(duì)于數(shù)據(jù)的維度很是問題。
import tensorflow as tf def tensor_concat(f, axis): x1 = f[0, :, :] for i in range(1, 8): x1 = tf.concat([x1, f[i, :, :]], axis=axis) return x1 def block_to_image(f): x1 = tf.reshape(f, [64, 1024]) x1 = tf.reshape(x1, [64, 32, 32]) m2 = tensor_concat(x1[0:8, :, :], axis=1) for i in range(1, 8): m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1) m2 = tf.concat([m2, m1], axis=0) x2 = tf.reshape(m2, [256, 256, 1]) return x2 x = tf.random_normal([ 8, 8, 1024]) with tf.Session() as sess: m = sess.run(x) m1 = sess.run(block_to_image(m))
最后通過行拼接和列拼接得到圖像大小為256×256×1大小的圖像。
對(duì)[batch_size, height, weight, channel] 的圖像進(jìn)行1一樣的圖像塊拼接:
在深度神經(jīng)網(wǎng)絡(luò)中,會(huì)有batch_size個(gè)圖像大小[256×256×1]的圖像進(jìn)行塊的拼接,對(duì)于多了一個(gè)維度的圖像拼接起來,由[batch_size, 8, 8, 1024]拼接為[batch_size,256, 256, 1]。在做著部分時(shí)batch_size這部分實(shí)在是不知道怎么處理,所以還是用了本辦法,使用的函數(shù)是append和tf.stack()
def tensor_concat(f, axis): x1 = f[0, :, :] for i in range(1, 8): x1 = tf.concat([x1, f[i, :, :]], axis=axis) return x1 def block_to_image(f): x3 =[] for k in range(f.shape[0]): x = f[k, :, :, :] x1 = tf.reshape(x, [64, 1024]) x1 = tf.reshape(x1, [64, 32, 32]) m2 = tensor_concat(x1[0:8, :, :], axis=1) for i in range(1, 8): m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1) m2 = tf.concat([m2, m1], axis=0) x2 = tf.reshape(m2, [256, 256, 1]) x3.append(x2) x4 = tf.stack(x3) return x4 x = tf.random_normal([10, 8, 8, 1024]) with tf.Session() as sess: m = sess.run(x) m1 = sess.run(block_to_image1(m))
在學(xué)習(xí)過程中對(duì)tensor不能直接賦值,比如不能寫:
x2 = tf.reshape(m2, [256, 256, 1]) x3[k, :, :, 1] = x2
這樣的代碼,會(huì)出現(xiàn)錯(cuò)誤:'Tensor' object does not support item assignment
對(duì)于帶有類似索引的賦值,參考的辦法是:
x3 = [] x3.append(x2)
這時(shí)候得到的是list的格式,所以接下來將list轉(zhuǎn)化為array,使用的是tf.stack(x3)
以上這篇tensorflow對(duì)圖像進(jìn)行拼接的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸
這篇文章主要介紹了python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸,文件包括文本,圖片,視頻等,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python中l(wèi)ambda表達(dá)式的使用詳解(完整通透版)
這篇文章主要介紹了Python中l(wèi)ambda表達(dá)式使用的相關(guān)資料,包括其基本語法、常見應(yīng)用場(chǎng)景(如排序、map、filter、reduce函數(shù)結(jié)合使用)以及如何在函數(shù)內(nèi)部或一次性使用,通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
TensorFlow實(shí)現(xiàn)Batch Normalization
這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)Batch Normalization,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型解析
這篇文章主要介紹了pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
抵御代碼復(fù)雜性使python函數(shù)更加Pythonic技巧示例詳解
這篇文章主要介紹了抵御代碼復(fù)雜性使python函數(shù)更加Pythonic技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python實(shí)現(xiàn)GB格式序列文件轉(zhuǎn)換Fasta格式文件
這篇文章主要為大家介紹了Python實(shí)現(xiàn)GB格式序列文件轉(zhuǎn)換Fasta格式文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

