2
我有一個TensorFlow模型,其中的一些特點:如何解釋TensorFlow預測,他們似乎有錯誤的形狀
state_size = 800,
num_classes = 14313,
batch_size = 10,
num_steps = 16, # width of the tensor
num_layers = 3
x = tf.placeholder(tf.int32, [batch_size, num_steps], name='input_placeholder')
y = tf.placeholder(tf.int32, [batch_size, num_steps], name='labels_placeholder')
rnn_inputs = [tf.squeeze(i, squeeze_dims=[1]) for i in
tf.split(x_one_hot, num_steps, 1)] # still a list of tensors (batch_size, num_classes)
...
logits = tf.matmul(rnn_outputs, W) + b
predictions = tf.nn.softmax(logits)
現在我想給它一個np.array(形狀的batch_size = X num_steps,所以10×16),我得到一個預測張量。
奇怪的是,它的形狀是160 x 14313.後者是類的數量。但是160從哪裏來?我不明白這一點。我希望每個類的概率對於批次中的每個元素(即10個)都是可能的。 num_steps如何捲入,如何從這個pred讀取。張量這是16個數字之後的預期元素?
我明白了,謝謝你。 softmax不給我正確的概率嗎?我應該使用exp函數?所以我認爲我應該只預測一個值而不是16個。爲了避免混淆,我在另一個問題中發佈了這個問題。 https://stackoverflow.com/questions/42766458/tensorflow-predicting-sequences-what-is-x-and-y – dorien
tf.nn.softmax計算通過softmax層的前向傳播。在計算模型輸出的概率時,可以在評估模型時使用它。所以是的,它會給你正確的概率,我想提供另一種方式,只是與logits。 – SerialDev
與此相關。我似乎不知道哪個標籤與哪個預測值有關。這應該很容易得到正確的? https://stackoverflow.com/questions/43039055/how-to-get-class-labels-from-tensorflow-prediction – dorien