algorithm - 定义仅针对 2D 平面上特定形状内的点触发的神经网络的权重和阈值
问题描述
我最初在 AI StackExchange 上问过这个问题,但由于这是一个算法问题,所以在这里可能更合适。
我在 2D 平面上有一个形状,我想绘制一个神经网络来检测点 (x,y) 是在形状内还是在形状外。
作为测试,假设我有一个矩形,它的四个点受以下约束:
(1,3), (2,3), (1,1) and (2,1).
这种形状的线的方程是:
x=2
x=1
y=1
y=3
我的最终问题是如何将其转换为神经网络中的一组权重和阈值。对于该算法,我在想我的神经网络将有 2 个输入神经元(一个用于每个 x 坐标,一个用于 y),然后是一个带有两个神经元的隐藏层,然后是一个带有一个神经元描述的输出层矩形,或不是'。所以这是一个全连接的网络?
我在想我希望形状内的值是:
1 ≤ x ≤ 2 (I want x to be between 1 and 2) AND
1 ≤ y ≤ 3 (I want y to be between 1 and 3)
但我不明白如何将其实际转换为权重和阈值?我遇到了等式
y = -(Wx/Wx)x - (Wb/Wy)
...但是在这种情况下没有 y 值,我不确定这是如何应用的?我想解决这个例子,但使用一种适用于其他形状(例如立方体或三角形)的方法。
更新 1:类似于手动为 AND/NOT 等门绘制感知器的方式,我想手动将 2D 形状转换为 NN,以便我可以理解该过程。
因此,此刻我有一个具有三个输入节点(X、Y 和 B)的 NN,以及一层中有四个隐藏节点(每个矩形线一个)。但是给定一个矩形,我不知道如何求解直线方程(3,3)(3,6),因为斜率未定义(6-3/3-3),所以我不知道如何插入 y=-Wx/Wy(x) - Wb/Wy 来计算权重和偏差。
解决方案
对于单层感知器,您将需要四个神经元。假设您使用 Heaviside 函数作为您想要的激活函数,
y1=numpy.heaviside(x1-1,1)
y2=numpy.heaviside(2-x1,1)
y2=numpy.heaviside(x2-1,1)
y3=numpy.heaviside(3-x2,1)
y=y1+y2+y3+y4
z=numpy.heaviside(y-4,1)
x1
x2
是输入;z
是输出,如果一个点在正方形内,则为 1,否则为 0。
推荐阅读
- angular - 我究竟做错了什么?角垫形式场
- google-colaboratory - 使用 ImageAI 库进行图像识别
- python - 使用 Pandas 将带有 html 标签的管道分隔文件读入数据框
- java - 为什么 SynchronizedList get 方法需要用 java 中的同步包装
- javascript - 使用 React-Audio-Player 在鼠标移动时自动播放音频文件
- apache-kafka - 安装在单台 PC 上时如何提高 Kafka(生产者和消费者)的性能
- google-bigquery - 将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题
- node.js - 用nodejs上传图片
- autohotkey - Autohotkey:WinMenuSelectItem 在 Figma 上不起作用
- reactjs - 在 reactjs 中用 amCharts4 开玩笑