在MNIST数据集上用numpy实现softmax函数

这篇博客提供了在MNIST数据集上使用numpy实现softmax函数的代码,无需理解原理或公式推导,只需调整数据集路径即可在任何环境下运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要用于记录已经写好,以后可以直接调用的代码段,不会对原理和公式推导进行说明,但是只要把数据集路径修改后,在每台机器上都可以直接用的。

import math
import numpy as np
import random
import gzip                              # 解压数据集
import pickle                            # 将解压后的数据集划分为三部分
import time
import matplotlib.pyplot as plt


class Softmax(object):  

    def __init__(self):
        self.learning_step = 0.00001    # 学习速率
        self.max_iteration = 200000     # 最大迭代次数
        self.weight_lambda = 0.01       # 衰退权重


    def compute_wx(self, x, l):
        '''计算单个样本x与第l组权重(参数)的乘积'''

        theta_l = self.w[l]
        product = np.dot(theta_l, x)
        return math.exp(product)


    def compute_probability(self, x, j):
        '''计算样本x属于类别j的概率'''

        # molecule分子;denominator分母
        molecule = self.compute_wx(x, j)
        denominator = sum([self.compute_wx(x, i) for i in range(self.k)])
        return 1.0 * molecule / denominator


    def compute_partial_derivative(self, x, y, j):
        '''计算代价函数关于第j组权重(参数)的偏导和梯
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值