在tensorflow中經常用到shape函式
例如
import tensorflow as tf
a = tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]],shape = [3,3])
b = tf.global_variables_initializer()
with tf.session() as sess:
sess.run(b)
print('data=[[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]] , shape = [3,3] ')
print('display:\n',sess.run(a))
print('\n')
其中 shape = [3,3]表示乙個3*3的二維資料,其組織形式為
[[1. 2. 3.]
[4. 5. 6.]
[7. 8. 9.]]
也可以表示為[[1. 2. 3.] [4. 5. 6.] [7. 8. 9.]],實質是一樣的。
再複雜一點的,例如
a = tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]],shape = [3,3,1])
其組織形式為
[[[1.] [2.] [3.]] [[4.] [5.] [6.]] [[7.] [8.] [9.]]]
可以看到每個資料自成一組,這就是 shape = [3,3,1]中最右邊的1帶來的效果。
對於通用的形式 shape = [s1,s2,s3,s4,s5],如何理解呢?
規則:從右到左分組
舉例:
a = tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]],shape = [1,3,3,2])
其組織形式為
[ [ [[1. 2.] [3. 4.] [5. 6.]] [[7. 8.] [9. 9.] [9. 9.]] [[9. 9.] [9. 9.] [9. 9.]] ] ]
根據shape=[1,3,3,2],從右到左,首先按照每2個數編一組形成group1,再每3個group1組編一組成group2,再每3個group2便一組成group3,最後整個group3又編乙個大組group4。所以最外層的方括號有4個。
當資料不夠,後續的分組中都以尾資料9.填充,強制形成[1,3,3,2]格式的陣列,1*3*3*2共18個資料。
reshape函式也可以參照shape函式進行理解。
Openssl中的sha1和sha256教程
sha1庫是一種雜湊演算法,用以生成結果為160bit的資料摘要,即20個位元組。sha256結果為256bit,即32個位元組。摘要的意思是,抽象為任意大小的資料為固定長度資料,結果是由於全部原始資料經過計算得出,逆推則無法計算除準確結果。摘要的特性 由於以上特性,sha雜湊被廣泛用於軟體工程中。...
Tensorflow中的Lazy load問題
用tensorflow訓練或者inference模型的時候,有時候會遇到執行越來越慢,最終記憶體被佔滿,導致電腦宕機的問題,我們稱之為記憶體溢位。出現這種問題很可能是因為在乙個session中,graph迴圈建立重複的節點所導致的lazy load問題。舉個例子,用tensorflow迴圈做多次加法...
tensorflow中的函式
執行當前tensor的run 操作 a tf.variable tf.ones 10 with tf.session as sess tf.global variables initializer run b sess.run a 1 b a eval 2 print b 中的 1 2 行的功能一樣...