您好,登錄后才能下訂單哦!
不懂tensorflow使用張量時(shí)應(yīng)該注意tf.concat,tf.reshape,tf.stack?其實(shí)想解決這個(gè)問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。
tensorflow升級(jí)1.0版本后與以前的版本并不兼容,可能出現(xiàn)各種奇奇怪怪的問題。
1 tf.concat函數(shù)
tensorflow1.0以前函數(shù)用法:tf.concat(concat_dim, values, name='concat'),第一個(gè)參數(shù)為連接的維度,可以將幾個(gè)向量按指定維度連接起來。
如:
t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] #按照第0維連接 tf.concat(0, [t1, t2]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] #按照第1維連接 tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
tf.concat的作用主要是將向量按指定維連起來,其余維度不變;而1.0版本以后,函數(shù)的用法變成:
t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] #按照第0維連接 tf.concat( [t1, t2],0) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] #按照第1維連接 tf.concat([t1, t2],1) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
位置變了,需要注意。
2 tf.stack函數(shù)
用法:stack(values, axis=0, name=”stack”):
“”“Stacks a list of rank-R tensors into one rank-(R+1) tensor.
x = tf.constant([1, 4]) y = tf.constant([2, 5]) z = tf.constant([3, 6]) tf.stack([x,y,z]) ==> [[1,4],[2,5],[3,6]] tf.stack([x,y,z],axis=0) ==> [[1,4],[2,5],[3,6]] tf.stack([x,y,z],axis=1) ==> [[1, 2, 3], [4, 5, 6]]
tf.stack將一組R維張量變?yōu)镽+1維張量。注意:tf.pack已經(jīng)變成了tf.stack
3.tf.reshape
用法:reshape(tensor, shape, name=None):主要通過改變張量形狀,可以從高維變低維,也可以從低維變高維;
a = tf.Variable(initial_value=[[1,2,3],[4,5,6]]) ==> shape:[2,3] b = tf.Variable(initial_value=[[[1,2,3],[4,5,6]],[[7,8,9],[1,0,2]]]) ==> shape:[2,2,3] a_1 = tf.reshape(a,[2,1,1,3]) ==> [[[[1,2,3]]],[[[4,5,6]]]] a_2 = tf.reshape(a,[2,1,3]) ==> [[[1,2,3]],[[4,5,6]]] b_1 = tf.reshape(b,[2,2,1,3]) ==> [[[[1,2,3]],[[4,5,6]]],[[[7,8,9]],[[1,0,2]]]] new_1 = tf.concat([b_1,a_1],1) new_2 = tf.reshape(tf.concat([b,a_2],1),[2,3,1,3]) """ new_1: [[[[1 2 3]] [[4 5 6]] [[1 2 3]]] [[[7 8 9]] [[1 0 2]] [[4 5 6]]]] new_2; [[[[1 2 3]] [[4 5 6]] [[1 2 3]]] [[[7 8 9]] [[1 0 2]] [[4 5 6]]]]
補(bǔ)充知識(shí):tensorflow中的reshape(tensor,[1,-1])和reshape(tensor,[-1,1])
和python 中的reshape用法應(yīng)該一樣
import tensorflow as tf a = [[1,2],[3,4],[5,6]] tf.reshape(a,[-1,1]) Out[13]: <tf.Tensor 'Reshape_4:0' shape=(6, 1) dtype=int32> tf.reshape(tf.reshape(a,[-1,1]),[1,-1]) Out[14]: <tf.Tensor 'Reshape_6:0' shape=(1, 6) dtype=int32>
tf.reshape(tensor,[-1,1])將張量變?yōu)橐痪S列向量
tf.reshape(tensor,[1,-1])將張量變?yōu)橐痪S行向量
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享tensorflow使用張量時(shí)應(yīng)該注意tf.concat,tf.reshape,tf.stack內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。