gpt4 book ai didi

machine-learning - 如何解释 TensorFlow 中的预测,它们的形状似乎错误

转载 作者:行者123 更新时间:2023-11-30 08:43:44 26 4
gpt4 key购买 nike

我有一个具有以下一些特征的 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 x 16),然后我得到一个预测张量。

奇怪的是,它的形状是160 x 14313。后者是类的数量。但160从哪里来呢?我不明白。我想知道我的每个类、批处理中每个元素的概率(即 10)。 num_steps 是如何参与其中的,我如何从这个 pred.txt 中读取内容?这 16 个数字之后的张量是预期的元素吗?

最佳答案

在本例中,160 来自您怀疑的形状。
这意味着每批 10 个有 16 个时间步长,当您执行形状变量时,这在技术上是扁平化的。
此时,您的 logits 形状为 160 * 类。因此您可以对每个批处理进行预测[i],然后每个批处理都有可能成为所需的类别。
这就是为什么要获取所选的类,您需要执行类似 tf.argmax(predictions, 1) 的操作来获取具有分类的张量
在您的情况下,形状为 160,因此它将是预测的 每个批处理的类。

为了获得概率,您可以使用 logits :

def prob(logit):
return 1/(1 + np.exp(-logit)

关于machine-learning - 如何解释 TensorFlow 中的预测,它们的形状似乎错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42830097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com