DL:LinearNN(numpy自定义的) solve XOR problem

简介: DL:LinearNN(numpy自定义的) solve XOR problem

输出结果

image.png




核心代码


#BP solve XOR Problem

import numpy as np

#输入数据,第一列的数字1表示偏置

X = np.array ([[1, 0, 0],

              [1, 0, 1],

              [1, 1, 0],

              [1, 1, 1]])

#标签

Y = np.array ([[0, 1, 1, 0]]) #两个中括号代表二维。分别对应00、01、10、11

#权值初始化,3行4列,取值范围[-1,1]

V = np.random.randn(3,4)*2-1

W = np.random.randn(4,1)*2-1

print (V)

print (W)

#设置学习率

lr = 0.11

           

def update():  #更新权值的函数

   global X,Y,W,V,lr   #当自定义的函数需要调用外部的参数时,需要利用global进行声明为全局变量

   L1=sigmoid(np.dot(X,V))  #隐藏层输出4*4

   L2=sigmoid(np.dot(L1,W)) #输出层输出4*1

   L2_delta=(Y.T-L2)*dsigmoid(L2)   #Y.T就是Y的转置

   L1_delta=L2_delta.dot(W.T)*dsigmoid(L1)

 

   W_C=lr*L1.T.dot(L2_delta)

   V_C=lr*X.T.dot(L1_delta)

   W=W+W_C

   V=V+V_C

for i in range(20000):

   update() #更新权值

   if i%500==0:

       L1=sigmoid(np.dot(X,V))  #隐藏层输出4*4

       L2=sigmoid(np.dot(L1,W)) #输出层输出4*1

       print("error:",np.mean(np.abs(Y.T-L2)))

     

L1=sigmoid(np.dot(X,V))  #隐藏层输出4*4

L2=sigmoid(np.dot(L1,W)) #输出层输出4*1

print(L2)

def judge(x):

   if x>=0.5:

       return 1

   else:

       return 0

for i in map(judge,L2):

   print(i)


LinearNN使用案例


1、LinearNN简单案例

https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTMxMzQ3NS8yMDE4MDYvMTMxMzQ3NS0yMDE4MDYyNTE1NDcwNTg3Mi01NDA3MDQ0NzEuZ2lm

2、LinearNN solve  XOR problem

当lr=0.3时,相对比较大,每一个步长比较大,所以会在坑底部(最小值)两端进行跳动,然后训练到一定轮数,再改lr=0.03即可看到更好的情况。

image.png

image.png





相关文章
|
3月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
117 3
|
3月前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
126 2
|
4月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
164 10
|
4月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
184 4
|
5月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
148 1
|
5月前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
94 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
6月前
|
机器学习/深度学习 存储 算法
NumPy 与 SciPy:Python 科学计算库的比较
【8月更文挑战第30天】
249 5
|
6月前
|
存储 C语言 Python
|
6月前
|
存储 并行计算 测试技术
NumPy 性能优化:提升 Python 数值计算的速度
【8月更文第30天】Python 是一种广泛使用的编程语言,在科学计算领域尤其受欢迎。然而,由于 Python 的动态类型和解释执行机制,其在处理大规模数值数据时可能会显得相对较慢。为了克服这一限制,NumPy(Numerical Python)库提供了高性能的多维数组对象以及一系列用于操作这些数组的函数。本文将探讨如何利用 NumPy 来提高 Python 中数值运算的效率。
692 1
|
6月前
|
存储 缓存 C语言