|
发表于 2024-11-12 12:01:39
|
显示全部楼层
如果你的 `predictions` 数组不是空的,而是包含了某种形状的数值,但输出结果仍然是空的 `tensor`,可能的问题是你在转换 `numpy` 数组到 `torch.tensor` 的时候出现了问题。
请确保 `predictions` 实际上是一个非空的列表且里面的数组有着正确的形状。例如,一个典型的 `predictions` 列表可能是 `[ [2.0, 1.0, 0.1], [0.5, 2.2, 1.5], [3.6, 0.4, 2.1] ]` 这样的结构,它表示三组类别的得分。
以下是一个检查点和修复你的代码:
- import torch
- import torch.nn.functional as F
- # 假设 predictions_list 是一个包含多个样本和每个样本的得分列表
- predictions = [
- [2.0, 1.0, 0.1], # 第一个样本
- [0.5, 2.2, 1.5], # 第二个样本
- [3.6, 0.4, 2.1] # 第三个样本
- ]
- # 将列表转换为tensor
- predictions_tensor = torch.tensor(predictions, dtype=torch.float32)
- # 使用softmax函数,沿着第一个维度计算(针对每一个样本进行 softmax)
- softmax_result = F.softmax(predictions_tensor, dim=1)
- # 找到每行最大概率的索引
- max_prob_indices = torch.argmax(softmax_result, dim=1)
- print("Softmax Result:")
- print(softmax_result)
- print("Indices of max probabilities:")
- print(max_prob_indices)
复制代码
注意:
1. 确保 `predictions` 是一个二维列表(或者 numpy 数组),每个子列表(或者数组行)代表一个样本的原始得分。
2. 尽量不要使用 `array([], dtype=float32)` 这种结构,除非在某种逻辑下确实需要空数组。
3. `dim=1` 参数告诉 `softmax` 函数在每个样本的维度上进行归一化处理(针对行的操作)。
确保输入数据的正确性,通常是编码逻辑正确性的关键。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|