[英]Initializing a matrix with alternating 0s and 1s in TensorFlow
我試圖用一個非常簡單的結構創建一個0和1的n×m矩陣:
[[1 0 0 0 0 0 0 ...],
[1 1 0 0 0 0 0 ...],
[1 1 1 0 0 0 0 ...],
[1 1 1 1 0 0 0 ...],
[0 1 1 1 1 0 0 ...],
[0 1 1 1 1 1 0 ...],
...
[... 0 0 0 1 1 1 1],
[... 0 0 0 0 1 1 1],
[... 0 0 0 0 0 1 1],
[... 0 0 0 0 0 0 1]]
但是,我不想開始編寫循環,因為使用內置的東西可能可以實現: A = tf.constant(???,shape(n,m))
請注意,在前3行之后,僅重復了4個1,接着是m-3 0,直到最后3行。
所以我在考慮重復重復的過程,但是我不知道要使用什么語法。
您正在尋找tf.matrix_band_part()
。 按照手冊,它的功能是
復制一個張量,將每個最內部矩陣的中心帶之外的所有內容都設置為零。
因此,在您的情況下,您將創建一個帶矩陣的矩陣,然后采用如下所示的4倍帶寬:
tf.matrix_band_part( tf.ones( shape = ( 1, n, m ) ), 3, 0 )
經過測試的代碼:
import tensorflow as tf
x = tf.ones( shape = ( 1, 9, 6 ) )
y = tf.matrix_band_part( x, 3, 0 )
with tf.Session() as sess:
res = sess.run( y )
print ( res )
輸出:
[[[1。 0. 0. 0. 0. 0.]
[1。 1. 0. 0. 0. 0.]
[1。 1. 1. 0. 0. 0.]
[1。 1. 1. 1. 0. 0.]
[0。 1. 1. 1. 1. 0.]
[0。 0. 1. 1. 1. 1.]
[0。 0. 0. 1. 1. 1.]
[0。 0. 0. 0. 1. 1.]
[0。 0. 0. 0. 0. 1.]]]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.