Python-两层神经网络的类

简介: 简单使用

image.png

代码实现

import numpy as np
def numerical_gradient(f,x):

h=1e-4
# 生成与x形状相同的数组
grad=np.zeros_like(x)
for idx in range(x.size):
    tmp_val=x[idx]
    x[idx]=tmp_val+h
    fxh1=f(x)
    x[idx]=tmp_val-h
    fxh2=f(x)
    grad[idx]=(fxh1-fxh2)/2*h
    x[idx]=tmp_val
return grad
    

def sigmold(x):

return 1/(1+np.exp(-x))

def softmax(a):

c=np.max(a)
exp_a=np.exp(a-c)
sum_exp_a=np.sum(exp_a)
y=exp_a/sum_exp_a
return  y

def cross_enroty_errorly(y,t):

if y.ndim==1:
    t=t.reshape(1,t.size)
    y=y.reshape(1,y.size)
batch_size=y.shape(0)
return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size

class TwolayerNet:

def __init__(self,input_size,hidden_size,output_size,weight_init_std=0.01):
    self.params={}
    self.params["w1"]=weight_init_std*np.random.randn(input_size,hidden_size)
    self.params["w2"]=weight_init_std*np.random.randn(hidden_size,output_size)
    self.params["b1"]=np.zeros(hidden_size)
    self.params["b2"]=np.zeros(output_size)
def predict(self,x):
    w1,w2=self.params["w1"],self.params["w2"]
    b1,b2=self.params["b1"],self.params["b2"]
    a1 = np.dot(x,w1) + b1
    z1 = sigmold(a1)
    a2 = np.dot(z1,w2) + b1
    y=softmax(a2)
    return y
def loss(self,x,t):
    y=self.predict(x)
    return cross_enroty_errorly(y,t)
def accury(self,x,t):
    y=self.predict(x)
    y=np.argmax(y,axis=1)
    t=np.argmax(1,axis=1)
    accury=np.sum(y==t)/float(x.shape[0])
    return accury
def numerical_gradient(self,x,t):
    loss_w=lambda w:self.loss(x,t)
    grads={}
    grads["w1"]=(loss_w,self.params["w1"])
    grads["b1"] = numerical_gradient(loss_w, self.params["b1"])
    grads["w2"] = numerical_gradient(loss_w, self.params["w2"])
    grads["b2"] = numerical_gradient(loss_w, self.params["b2"])
    return grads
相关文章
|
11小时前
|
网络协议 Python
Python 网络编程实战:构建高效的网络应用
【5月更文挑战第18天】Python在数字化时代成为构建网络应用的热门语言,因其简洁的语法和强大功能。本文介绍了网络编程基础知识,包括TCP和UDP套接字,强调异步编程、数据压缩和连接池的关键作用。提供了一个简单的TCP服务器和客户端代码示例,并提及优化与改进方向,鼓励读者通过实践提升网络应用性能。
16 6
|
1天前
|
机器学习/深度学习 数据采集 自然语言处理
叮!你需要的Python面试指南以送到!,计算机网络面试知识
叮!你需要的Python面试指南以送到!,计算机网络面试知识
|
2天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
18 3
|
3天前
|
Python
Python-类视图和蓝图
Python-类视图和蓝图
9 2
|
3天前
|
存储 Java 数据安全/隐私保护
Python----类对象和实例对象
Python----类对象和实例对象
9 2
|
3天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1
|
3天前
|
缓存 负载均衡 应用服务中间件
python怎么发起网络请求?
python怎么发起网络请求?
9 0
|
3天前
|
存储 前端开发 机器人
Python网络数据抓取(6):Scrapy 实战
Python网络数据抓取(6):Scrapy 实战
21 2
|
3天前
|
机器学习/深度学习 数据挖掘 PyTorch
使用Python实现长短时记忆网络(LSTM)的博客教程
使用Python实现长短时记忆网络(LSTM)的博客教程
6 0
|
3天前
|
机器学习/深度学习 Python
【Python实战】——神经网络识别手写数字(三)
【Python实战】——神经网络识别手写数字