深度学习入门-(基于python的理论和实现)11

本文介绍了一个简单的卷积神经网络(SimpleConvNet)的实现,包括卷积层、激活函数、池化层和全连接层的构建。网络参数初始化使用随机标准差为0.01的正态分布,卷积层设有30个滤波器,大小为5x5,步长为1,无填充。池化层默认采用2x2窗口进行下采样。全连接层包括两层,隐藏层节点数为100,输出层节点数为10,用于分类任务。
摘要由CSDN通过智能技术生成

卷积层的实现,加一点个人理解

'''
卷积
激活
池化
全连接
激活
全连接
softmax
'''


import numpy as np
class SimpleConvNet:
    def __init__(self,input_dim=(1,28,28),
                 conv_param={'filter_num':30,
                             'filter_size':5,
                             'pad':0,
                             'stride':1},
                 hidden_size = 100,
                 output_size = 10,weight_init_std=0.01):
        filter_num = conv_param['filter_num']
        filter_size = conv_param['filter_size']
        filter_pad = conv_param['pad']
        filter_stride = conv_param['stride']
        input_size = input_dim[1]
        conv_output_size = (input_size - filter_size + 2*filter_pad)/filter_stride + 1
        pool_output_size = int(filter_num *(conv_output_size/2)*(conv_output_size/2))# 这里写的不够灵活,默认池化窗口是2*2的     
        #书上是池化的结果变成二维的,这里呢没有变成二维,反而对下面设置self.params['W2'] 的形状 方便了
        #其实卷积核,也算是权重W,只不过他们的运算方式不太一样

        self.params={}

        # W1 b1 (第一层)负责卷积
        self.params['W1'] =  weight_init_std * np.random.randn(filter_num,input_dim[0],filter_size,filter_size)
        # 卷积核数目,通道数,卷积核长,宽。
        self.params['b1'] = np.zeros(filter_num)
        #卷积之后的结果是 1 * pool_output_size

        #2,3层是全连接层
        #然后 第二层的W 的形状是 pool_output_size * hidden_size
        self.params['W2'] = weight_init_std * np.random.randn(pool_output_size,hidden_size)
        self.params['b2'] = np.zeros(hidden_size)
        #经过第二层之后的数据 的 形状是:1 * hidden_size
        #第三层W 的形状是hidden_size * output_size
        self.params['W3'] = weight_init_std * np.random.randn(hidden_size,output_size)
        self.params['b3'] = np.zeros(output_size)
        #经过第三层之后的数据是: 1 * output_size

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值