深度学习高维空间处理和解决

简介: 深度学习高维空间处理和解决

1 维度

如果我们判断一个人是否会打篮球,仅仅通过身高角度显然是不合理的,我们还需要从其他角度分析,比如体重、身体灵活性以及是否经常见到凌晨四点钟的太阳等等因素。

同样在豆豆的世界,豆豆的毒性不仅与大小有关,还可能与颜色深浅、软硬等有关


对于三维世界的我们,很难在四维空间作图,但是数学作为一种抽象的工具,在数学看来,这不过是在输入上增加了一个维度而已,输入数据有多少元素也就是所谓的特征维度,也叫数据维度。

也就是说我们从更多的维度观察豆豆的时候,也就能更好的预测它的毒性。


我们选择大小和颜色深浅两个维度为例:

此时预测函数的线性部分需要从一元一次函数变成二元一次函数

如果我们在三维坐标系中把这个函数画出来,很明显这是一个平面,正如一元一次函数中是一个线性函数

这个平面被非线性激活函数激活后,就被扭曲成了一个s型的曲面,正如一元一次函数的直线被激活函数激活后扭曲为一个s型曲线一样

此时我们可以通过调节参数,在俯视下可以使用一条直线将豆豆分割为有毒无毒,而这条线也称为等高线割线

但如果豆豆的分布是这样的情况,我们上述的方法也就无能为力了,这种问题也被称为:线性不可分问题

这个时候我们就需要增加隐藏层神经元,让这个直线“弯曲

💡思考:需要几个隐藏神经元可以让分割线形成一个圈

2 代码实现

如遇到同包下引入.py文件爆红,右键将其加入到source root:

原因:目标文件不在pycharm编译path下

豆豆数据集模拟:dataset.py

import numpy as np
def get_beans(counts):
  xs = np.random.rand(counts,2)*2
  ys = np.zeros(counts)
  for i in range(counts):
    x = xs[i]
    if (x[0]-0.5*x[1]-0.1)>0:
      ys[i] = 1
  return xs,ys
def get_beans2(counts):
  xs = np.random.rand(counts,2)*2
  ys = np.zeros(counts)
  for i in range(counts):
    x = xs[i]
    if (np.power(x[0]-1,2)+np.power(x[1]-0.3,2))<0.5:
      ys[i] = 1
  return xs,ys

🚩豆豆毒性分布如下:

🚩梯度下降前:

绘图工具封装:plot_utils.py

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
def show_scatter(xs,y):
  x = xs[:,0]
  z = xs[:,1]
  fig = plt.figure()
  ax = Axes3D(fig)
  ax.scatter(x, z, y)
  plt.show()
def show_surface(x,z,forward_propgation):
  x = np.arange(np.min(x),np.max(x),0.1)
  z = np.arange(np.min(z),np.max(z),0.1)
  x,z = np.meshgrid(x,z)
  y = forward_propgation(x,z)
  fig = plt.figure()
  ax = Axes3D(fig)
  ax.plot_surface(x, z, y, cmap='rainbow')
  plt.show()
def show_scatter_surface(xs,y,forward_propgation):
  x = xs[:,0]
  z = xs[:,1]
  fig = plt.figure()
  ax = Axes3D(fig)
  ax.scatter(x, z, y)
  x = np.arange(np.min(x),np.max(x),0.01)
  z = np.arange(np.min(z),np.max(z),0.01)
  x,z = np.meshgrid(x,z)
  y = forward_propgation(x,z)
  ax.plot_surface(x, z, y, cmap='rainbow')
  plt.show()

梯度下降:2_inputs_model.py

import numpy as np
import dataset
import plot_utils
m = 100
xs, ys = dataset.get_beans(m)
print(xs)
print(ys)
plot_utils.show_scatter(xs, ys)
w1 = 0.1
w2 = 0.2
b = 0.1
## [[a,b][c,d]]
## x1s[a,c]
## x2s[b,d]
## 逗号,区分的是维度,冒号:区分的是索引,省略号… 用来代替全索引长度
# 在所有的行上,把第0列切割下来形成一个新的数组
x1s = xs[:, 0]
x2s = xs[:, 1]
# 前端传播
def forward_propgation(x1s, x2s):
    z = w1 * x1s + w2 * x2s + b
    a = 1 / (1 + np.exp(-z))
    return a
plot_utils.show_scatter_surface(xs, ys, forward_propgation)
for _ in range(500):
    for i in range(m):
        x = xs[i] ## 豆豆特征
        y = ys[i] ## 豆豆是否有毒
        x1 = x[0]
        x2 = x[1]
        a = forward_propgation(x1, x2)
        e = (y - a) ** 2
        deda = -2 * (y - a)
        dadz = a * (1 - a)
        dzdw1 = x1
        dzdw2 = x2
        dzdb = 1
        dedw1 = deda * dadz * dzdw1
        dedw2 = deda * dadz * dzdw2
        dedb = deda * dadz * dzdb
        alpha = 0.01
        w1 = w1 - alpha * dedw1
        w2 = w2 - alpha * dedw2
        b = b - alpha * dedb
plot_utils.show_scatter_surface(xs, ys, forward_propgation)

目录
相关文章
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
3486 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
机器学习/深度学习 自然语言处理 自动驾驶
深度学习中的潜在空间
深度学习中的潜在空间
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测(2)
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测(1)
基于YOLOv8深度学习的遥感地理空间物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 卷积篇 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
YOLOv5改进 | 卷积篇 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
737 0
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
640 0
|
机器学习/深度学习
《深度学习论文实现:空间变换网络-第一部分》电子版地址
深度学习论文实现:空间变换网络-第一部分
167 0
《深度学习论文实现:空间变换网络-第一部分》电子版地址
|
机器学习/深度学习 传感器 存储
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)
随着帧速率、点云大小和传感器分辨率的增加,这些点云的实时处理仍必须从车辆环境的这张日益精确的图片中提取语义。在这些点云上运行的深度神经网络性能和准确性的一个决定因素是底层数据表示及其计算方式。本文调查了神经网络中使用的计算表示与其性能特征之间的关系,提出了现代深度神经网络中用于3D点云处理的LiDAR点云表示的新计算分类法。使用这种分类法,对不同的方法家族进行结构化分析,论文揭示了在计算效率、内存需求和表示能力方面的共同优势和局限性,这些都是通过语义分割性能来衡量的。最后,论文为基于神经网络的点云处理方法的未来发展提供了一些见解和指导。
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)
|
机器学习/深度学习 算法 Python
纯干货:深度学习实现之空间变换网络-part1
本文介绍了仿射变换和双线性插值在图片变换中的应用。
11920 0

热门文章

最新文章