2017-08-14 65 views
4

我正在學習使用張量流機器學習食譜的張量流(https://github.com/nfmcclure/tensorflow_cookbook)。我目前在NLP章節(07)。我對如何決定張量變量的維數感到困惑。例如,在單詞例如袋,他們使用:關於張量流變量形狀的困惑

# Create variables for logistic regression 
A = tf.Variable(tf.random_normal(shape=[embedding_size,1])) 
b = tf.Variable(tf.random_normal(shape=[1,1])) 

# Initialize placeholders 
x_data = tf.placeholder(shape=[sentence_size], dtype=tf.int32) 
y_target = tf.placeholder(shape=[1, 1], dtype=tf.float32) 

,並在TF-IDF例如他們使用:

# Create variables for logistic regression 
A = tf.Variable(tf.random_normal(shape=[max_features,1])) 
b = tf.Variable(tf.random_normal(shape=[1,1])) 

x_data = tf.placeholder(shape=[None, max_features], dtype=tf.float32) 
y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32) 

怎樣才能當上在使用無對1決定佔位符形狀?謝謝!

+0

看一看[this answer](https://stackoverflow.com/ question/37096225/how-to-understand-static-shape-and-dynamic-shape-tensorflow)來解釋如何在Tensorflow中處理形狀 – GPhilo

回答

4

使用None作爲形狀的一部分,意味着它將在您運行session時確定。 這對培訓所謂的batch培訓非常有用,您可以在培訓過程的每次迭代中提供數據的固定大小子集。 所以,如果你保持在None你可以切換批量大小沒有問題。 (雖然你不會在同一會話中這樣做,但每次會話都可以嘗試不同的批量大小)

當你聲明一個特定的形狀時,這就是它的樣子,那是唯一的形狀會話(使用feed_dict PARAM)

在特定示例中,代碼的第一部分期間被饋送給它,的y_target形狀總是會[1, 1]其中的代碼的第二部分,y_target可以[10, 1]/[200, 1]/[<whatever>, 1]

0

當應用中的元素數量應該使用「無」呃事先未知。但是,例如在x_data佔位符中,如果數據元素的計數是1,即它是預先知道的,那麼您可以用1替換'None'。