人工神经网络—Softmax分类器

SVM输出的是一个得分值;

Softmax的输出是概率。

Sigmoid函数

 

损失函数计算的是判断正确时的概率的损失值,所以这里是0.13。

Softmax分类器对任何一个分数都可以求出一个损失值。

 

转载于:https://www.cnblogs.com/zzx1905/p/Softmax.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于人工神经网络BP算法的分类Matlab程序的框架,你可以根据自己的需求进行修改和完善: ```matlab % 数据准备 load data.mat % 加载数据集 train_data = data(:, 1:end-1); % 提取训练数据 train_label = data(:, end); % 提取训练标签 label_num = length(unique(train_label)); % 标签个数 % 参数设置 input_num = size(train_data, 2); % 输入层神经元个数 hidden_num = 20; % 隐藏层神经元个数 output_num = label_num; % 输出层神经元个数 learn_rate = 0.1; % 学习率 max_epoch = 1000; % 最大迭代次数 % 网络初始化 w1 = randn(input_num, hidden_num); % 输入层到隐藏层的权重 b1 = zeros(1, hidden_num); % 隐藏层偏置 w2 = randn(hidden_num, output_num); % 隐藏层到输出层的权重 b2 = zeros(1, output_num); % 输出层偏置 % 训练网络 for epoch = 1:max_epoch % 前向传播 hidden_output = sigmoid(train_data * w1 + b1); % 隐藏层输出 output = softmax(hidden_output * w2 + b2); % 输出层输出 % 计算损失 loss = -sum(sum(log(output) .* (train_label == 1), 2)); % 反向传播 delta_output = output - train_label; delta_hidden = delta_output * w2' .* sigmoid_prime(hidden_output); w2 = w2 - learn_rate * hidden_output' * delta_output; b2 = b2 - learn_rate * sum(delta_output, 1); w1 = w1 - learn_rate * train_data' * delta_hidden; b1 = b1 - learn_rate * sum(delta_hidden, 1); % 打印训练进度 if mod(epoch, 100) == 0 fprintf('Epoch %d: loss = %f\n', epoch, loss); end end % 测试网络 test_data = load('test_data.mat'); % 加载测试数据集 test_output = softmax(sigmoid(test_data * w1 + b1) * w2 + b2); % 预测结果 [~, test_label] = max(test_output, [], 2); % 预测标签 ``` 其中,`sigmoid`和`softmax`分别是sigmoid函数和softmax函数,可以自行定义实现。`sigmoid_prime`是sigmoid函数的导数,也可以自行定义实现。`data.mat`是训练数据集,每行为一个样本,最后一列为样本的标签。`test_data.mat`是测试数据集,每行为一个样本,无标签。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值