簡體   English   中英

在TensorFlow中以0和1交替初始化矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM