You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CIFAR10图片的Hinge/Softmax Loss计算索引越界报错求助

CIFAR10图片Hinge/Softmax损失计算报错修复

报错原因分析

报错index 1 is out of bounds for axis 0 with size 1出现在softmax_loss函数的对数运算行,核心问题有两个:

  1. 标签维度不匹配:从y_train取出的标签是二维数组(如[[3]]),直接用于索引时会导致维度混乱。
  2. 索引逻辑错误:softmax是形状为(1,10)的单样本预测结果,代码中用range(num_classes)(即0-9)作为行索引,试图访问10行数据,但实际只有1行,触发越界。

修复方案

1. 修正softmax_loss函数

将输入的标签转换为标量,并调整softmax的索引方式,匹配单样本的形状:

def softmax_loss(y_true, y_pred):
    softmax = np.exp(y_pred) / np.sum(np.exp(y_pred), axis=1, keepdims=True)
    # 将二维标签转为标量,取对应类别的softmax值
    y_true_scalar = y_true.item()
    loss = -np.log(softmax[0, y_true_scalar])
    return loss

2. 同步优化循环中的标签处理

在循环里直接将标签转为标量,减少函数内的额外处理:

# 原代码
y_true_s = y_train[i]
# 修改为
y_true_s = y_train[i].item()

完整修复后代码

import numpy as np
from keras.datasets import cifar10

# 定义权重矩阵
W = np.random.rand(10, 3072)

# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# 展平图片
x_train_flat = x_train.reshape(x_train.shape[0], -1)

# 计算单张图片的Hinge Loss
def hinge_loss(y_true, y_pred):
    margin = 1.
    loss = np.maximum(0., margin - y_true * y_pred)
    return loss

# 计算单张图片的Softmax Loss
def softmax_loss(y_true, y_pred):
    softmax = np.exp(y_pred) / np.sum(np.exp(y_pred), axis=1, keepdims=True)
    loss = -np.log(softmax[0, y_true])
    return loss


hinge_losses = []
softmax_losses = []

# 遍历训练集每张图片
for i in range(x_train_flat.shape[0]):
    # 计算预测值
    x_i = x_train_flat[i, :]
    y_i = np.dot(W, x_i)
    
    # 计算Hinge Loss
    y_true_h = np.zeros_like(y_i)
    y_true_h[y_train[i].item()] = 1
    hinge_loss_value = np.sum(hinge_loss(y_true_h, y_i))
    hinge_losses.append(hinge_loss_value)
    
    # 计算Softmax Loss
    y_true_s = y_train[i].item()
    softmax_loss_value = np.sum(softmax_loss(y_true_s, y_i.reshape(1, -1)))
    softmax_losses.append(softmax_loss_value)

# 打印平均损失值
print("Average Hinge Loss:", np.mean(hinge_losses))
print("Average Softmax Loss:", np.mean(softmax_losses))

内容的提问来源于stack exchange,提问作者Melina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:59:56