我有下面的表達,這是給我的問題。我已經將batch_size定義爲batch_size = tf.shape(input_tensor)[0]
,它根據模型輸入張量的大小動態確定批量的大小。我在代碼的其他地方沒有問題地使用它。我感到困惑的是,當我運行下面這行代碼時,它說形狀是(?,?)我期望它是(?,128),因爲它知道第二個維度。爲什麼tensorflow不能確定這個表達式的形狀?
print(tf.zeros((batch_size, 128)).get_shape())
我想知道形狀,因爲我正在嘗試執行以下操作並且出現錯誤。
rnn_input = tf.reduce_sum(w * decoder_input, 1)
last_out = decoder_outputs[t - 1] if t else tf.zeros((batch_size, 128))
rnn_input = tf.concat(1, (rnn_input, last_out))
此代碼需要在第一個時間步將last_out設置爲零。
以下是錯誤ValueError: Linear expects shape[1] of arguments: [[None, None], [None, 1024]]
我在做類似的事情,當我決定爲我的RNNs初始狀態向量。
state = tf.zeros((batch_size, decoder_multi_rnn.state_size), tf.float32)
我也得到(?,?)當我嘗試打印狀態的大小,但它並沒有真正引發任何異常,當我嘗試使用它。
您的打印內容是否與Session()一樣是sess:'(或類似的)表達式?你有沒有嘗試過類似'print(tf.zeros((batch_size.eval(),128))。get_shape())'? – mathetes
我不在會議中。我不認爲我想這樣做,因爲那麼模型會被固定的批量大小卡住。 – chasep255