无需深度学习框架——利用Python实现一个神经网络

这篇博客介绍了如何在不依赖深度学习框架的情况下,用Python3实现一个神经网络。作者基于Michael Nielsen的神经网络与深度学习代码,提供了Python3的版本,并详细注释了过程。在实现中,重点在于神经网络类的定义,特别是梯度下降法的实现。数据集载入部分,针对Python3的变化进行了调整,如zip对象处理和cPickle模块替换为pickle模块。经过训练,即使只有30个神经元的隐藏层,模型也能达到95%的准确率。
摘要由CSDN通过智能技术生成

不用深度学习框架,利用Python3实现神经网络。
Michael Nielsen神经网络与深度学习mnist代码的Python3版本,并在代码中做了详细注释。

定义一个神经网络

定义一个神经网络类,在类方法中,最重要的是梯度下降法中的,即SGD

#! /usr/bin/env python3
#coding=utf-8
'''
net_work.py
~~~~~~~~~~~~~
手写神经网络
'''

#### libraries
# standard libraries
import random

# third-party library
import numpy as np

class Network(object):
    '''
    定义一个神经网络
    '''
    def __init__(self,sizes):
        '''
        初始化层
        :param sizes: each layer`s cell number  
        '''
        self.num_layers=len(sizes)
        self.size=sizes
        self.W=[np.random.randn(y,x)
                for x,y in zip(sizes[:-1],sizes[1:])]
        self.B=[np.random.randn(x,1)
                for x in sizes[1:]]

    def SGD(self,train_data,eta,mini_batch_size,epoches,test_data=None):
        '''
        随机梯度下降法
        :param train_data: 
        :param eta: 学习率
        :param mini_batch_size: 小批量规模
        :param epoches: 迭代周期
        :param test_data: 
        :return: w,b
        '''
        n_train=len(train_data)

        #开始迭代
        for i in range(epoches):
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值