【机器学习——BP神经网络】——Python实现、模型保存与调用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/12/31 21:46
# @Author  : @linlianqin
# @Site    : 
# @File    : bp.py
# @Software: PyCharm
# @description:

import pandas as pd
import numpy as np
import datetime
from sklearn.utils import shuffle
import json
from paths import abs_path

# 1.初始化参数
def initialize_parameters(n_x, n_h, n_y):
	np.random.seed(2)

	# 权重和偏置矩阵
	w1 = np.random.randn(n_h, n_x) * 0.01
	b1 = np.zeros(shape=(n_h, 1))
	w2 = np.random.randn(n_y, n_h) * 0.01
	b2 = np.zeros(shape=(n_y, 1))

	# 通过字典存储参数
	parameters = {'w1': w1, 'b1': b1, 'w2': w2, 'b2': b2}

	return parameters


# 2.前向传播
def forward_propagation(X, parameters):
	w1 = parameters['w1']
	b1 = parameters['b1']
	w2 = parameters['w2']
	b2 = parameters['b2']

	# 通过前向传播来计算a2
	z1 = np.dot(w1, X) + b1  # 这个地方需注意矩阵加法:虽然(w1*X)和b1的维度不同,但可以相加
	a1 = np.tanh(z1)  # 使用tanh作为第一层的激活函数
	z2 = np.dot(w2, a1) + b2
	a2 = 1 / (1 + np.exp(-z2))  # 使用sigmoid作为第二层的激活函数

	# 通过字典存储参数
	cache = {'z1': z1, 'a1': a1, 'z2': z2, 'a2': a2}

	return a2, cache


# 3.计算代价函数
def compute_cost(a2, Y, parameters):
	m = Y.shape[1]  # Y的列数即为总的样本数

	# 采用交叉熵(cross-entropy)作为代价函数
	logprobs = np.multiply(np.log(a2), Y) + np.multiply((1 - Y), np.log(1 - a2))
	cost = - np.sum(logprobs) / m

	return cost


# 4.反向传播(计算代价函数的导数)
def backward_propagation(parameters, cache, X, Y):
	m = Y.shape[1]

	w2 = para
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值