首页 > 其他分享 >深度学习手写数据集

深度学习手写数据集

时间:2022-10-07 15:57:34浏览次数:47  
标签:return random param 学习 np train 深度 test 手写

题目要求:完成对手写数字数据集的读取、神经网络的推理和批处理过程,3层网络结构(第一隐藏层100个神经元,第二隐藏层50个神经元,输出层10个神经元,神经网络的参数随机生成),计算模型的准确率

# coding:utf-8
# 库导入
import numpy as np
import pickle

def sigmoid(x):
    """

    :param x: 进入隐藏层的参数
    :return: 激活函数的值
    """
    return 1 / (1 + np.exp(-x))

def softmax(x):
    '''

    :param x: 进入输出层的参数
    :return: 输出层的结果
    '''
    max = np.max(x)
    exp_x = np.exp(x - max)
    return exp_x / np.sum(exp_x)
# 输入的导入以及初始化
def init():
    '''

    :return: 文件中的数据集
    '''
    # 数据输入
    with open(r'C:\Users\86135\Desktop\mnist.pkl', 'rb') as file:
        dataset = pickle.load(file)
    x_train, y_train, x_test, y_test = dataset["train_img"], dataset["train_label"],\
                                       dataset["test_img"], dataset["test_label"]
    return x_train, y_train, x_test, y_test


def work(x_train, y_train, x_test, y_test):
    '''

    :param x_train: 训练集
    :param y_train: 测试集
    :param x_test: 训练集标签
    :param y_test: 测试集标签
    :return: 正确划分数据集标签的个数
    '''
    # 隐藏层, 输出层的权重参数和偏置初始化
    w1 = np.random.rand(784, 100)
    b1 = np.random.rand(100)
    w2 = np.random.rand(100, 50)
    b2 = np.random.rand(50)
    w3 = np.random.rand(50, 10)
    b3 = np.random.rand(10)
    correct = 0  # 用来记录正确预测的数量
    # 遍历所有的测试集
    for i in range(len(x_test)):
        x = x_test[i]
        # 第一层隐藏层
        a1 = np.dot(x, w1) + b1
        z1 = sigmoid(a1)
        # 第二层隐藏层
        a2 = np.dot(z1, w2) + b2
        z2 = sigmoid(a2)
        # 输出层
        a3 = np.dot(z2, w3) + b3
        y = softmax(a3)
        y_label = np.argmax(y)
        # 如果预测的和正确标签一直,则正确预测数量+1
        if y_label == y_test[i]:
            correct += 1
    return correct

# 数据初始化
x_train, y_train, x_test, y_test = init()
correct = work(x_train, y_train, x_test, y_test)
# 结果展示
print(f"预测的正确的数量有{correct}个")
print(f"正确率为{correct / len(x_test) * 100:.2f}%")

手写数据集文件下载地址 mnist.pkl

标签:return,random,param,学习,np,train,深度,test,手写
From: https://www.cnblogs.com/Reina-love/p/16759858.html

相关文章

  • Mongodb学习实践文档
    2020年12月目 录1MongoDB简介12Mongodb与传统关系型数据库对比13Mongodb基础运维23.1Mongodb安装33.1.1创建用户33.1.2创建目录33.1.3安装33.1.4mongod......
  • JavaScript 学习-49.localStorage前端保存数据
    前言localstorage在浏览器的API有两个:localStorage和sessionStorage存在于window对象中:localStorage对应window.localStorage,sessionStorage对应window.sessio......
  • PyTorch搭建AlexNet实现猫狗分类学习笔记
    PyTorch搭建AlexNet实现猫狗分类一篇简单的学习笔记学习视频:https://www.bilibili.com/video/BV18L4y167jr/?spm_id_from=333.1007.top_right_bar_window_custom_collect......
  • 学习笔记六
    第三章3.1~3.2多任务处理与进程多任务处理:多任务处理指的是机器同时进行几项独立活动的能力。在计算机技术中,多任务处理是通过在不同任务之间切换实现的。虽然在一个......
  • VC R-CNN | 无监督的视觉常识特征学习(附源码)
    计算机视觉研究院专栏作者:Edison_G最近CVPR不是在线直播,我关注了下,发现一篇很有意思的paper。让我想到在研究生有做过类似的算法——因果关系。今天我们看看这位作者是怎么......
  • 英伟达A100 Tensor Core GPU架构深度讲解
    计算机视觉研究院专栏作者:Edison_G现代云数据中心运行的计算密集型应用的多样性推动了NVIDIAGPU加速云计算的爆发。这种密集的应用包括人工智能深度学习训练和推理、数据分......
  • 深度分析NVIDIA A100显卡架构(附论文&源码下载)
    计算机视觉研究院专栏作者:Edison_G​​英伟达A100TensorCoreGPU架构深度讲解​​上次“计算机视觉研究院”已经简单介绍了GPU的发展以及安培架构的A100显卡,今天我们就来......
  • 2020最新文本综述:从浅层到深度学习(附PDF下载)
    计算机视觉研究院专栏作者:Edison_G从1961-2020年文本分类自浅入深的发展:1、摘要文本分类是自然语言处理中最基本的任务。由于深度学习的空前成功,过去十年中该领域的研究激增......
  • 系统分析师:学习笔记之一:浮点数相关
    1.尾数+阶码;2.尾数表述精度,越大,精度越高;3.阶码越大,表示的范围大;4.2个浮点数的运算,通常是尾数的移码。......
  • AI趣闻 | 深度学习二十不惑、三十而已、四十可期
    计算机视觉研究院最近《二十不惑》和《三十而已》两部剧比较火热,但是作为AI领域的IT同胞们,大家应该都知晓深度学习的“二十不惑”和“三十而已”的故事吗?今天小编带大家回顾......