搭建一个简单的神经网络

搭建一个简单的神经网络

搭建一个简单二分类神经网络。
一个简单的三层网络,包括输入层,隐层,输出层。反向传播迭代更新。

软件:PyCharm
Python version:3.7

代码:

import numpy as np

class NeuralNetwork:
    def __init__(self):
        pass

    ##实现sigmode函数,同时通过True/False 来分别返回sigmode函数的导数和函数
    def sigmode(self, x, deriv=False):
        if deriv:
            return x * (1 - x)
        else:
            return 1 / (1 + np.exp(-x))

    ##开始训练,train_num训练次数
    def train(self, x, y, train_num):
        learn_rate = 1

        ##两层参数,随机生成
        self.w0 = 2 * np.random.random((x.shape[1], 4)) - 1
        self.w1 = 2 * np.random.random((4, 1)) - 1

        for i in range(train_num):
            ##前向传播
            layer0 = x
            layer1 = self.sigmode(np.dot(layer0, self.w0))
            layer2 = self.sigmode(np.dot(layer1, self.w1))

            ##反向传播
            layer2_error = y - layer2
            layer2_delta = layer2_error * self.sigmode(layer2, True)
            layer1_error = layer2_delta.dot(self.w1.T)
            layer1_delta = layer1_error * self.sigmode(layer1, True)

            self.w1 += learn_rate * layer1.T.dot(layer2_delta)
            self.w0 += learn_rate * layer0.T.dot(layer1_delta)

    ##测试
    def result(self, test):
        return np.round(self.sigmode(np.dot(self.sigmode(np.dot(test, self.w0)), self.w1)))



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值