neural-network - 我的神经网络向量输入大小需要匹配输出大小吗?
问题描述
我正在尝试使用神经网络进行二元分类。它由三层组成。第一层有 3 个输入神经元,隐藏层有 2 个神经元,输出层有 3 个输出二进制值 1 或 0 的神经元。实际上输出通常是浮点数,但通常会四舍五入为整数数字。
如果网络只输出 3 的向量,那么我的输入向量不应该是相同的大小吗?否则,对于分类,您如何将输出映射到输入?
我根据以下文章使用 VBA 在 Excel 中编写了神经网络:https ://www.analyticsvidhya.com/blog/2017/05/neural-network-from-scratch-in-python-and-r/ 到目前为止完全按照文章中的描述工作。我目前无法访问机器学习库,所以我选择尝试一下。
例如:
如果网络的输出是 [n, n ,n],这是否意味着我的输入数据也必须是 [n, n, n]?
从我在这里读到的:神经网络输入/输出
似乎这就是它应该的方式。不过我不完全确定。
解决方案
简单来说,对于回归任务,您的输出通常具有维度[1]
(如果您预测单个值)。
对于分类任务,您的输出应该具有与您拥有的类数相同的维度数(输出是概率,它们的总和 = 1)。
因此,没有必要具有相同的输入和输出维度。NN 只是一个维度到另一个维度的投影。
例如,
- 回归,我们预测房价:输入是
[1, 10]
(对房产的特征),输出是[1]
- 价格 - 分类,我们预测类(将被出售或不出售):输入是
[1, 11]
(相同的特征+上市价格),输出是[1, 2]
(类的概率0
(不会出售)和1
(将被出售);例如[1; 0]
,,[0; 1]
或[0.5; 0.5]
等等; 是二分类)
此外,输入输出维度的相等性存在于更具体的任务中,例如,自动编码器模型(当您需要在其他维度中呈现数据然后将其表示回原始维度时)。
同样,输出维度是 1 个批次的输出大小。只有一个,而不是整个数据集。
推荐阅读
- c# - 如何在 Nuke 构建中获取项目的 OutputPath
- powerbi - 刷新错误提示 Power BI 中的内存不足
- gradle - Process 'command 'C:\Program Files\Java\jdk\bin\java.exe'' 以非零退出值 1 eclipse 结束
- c# - 在gridview中设置文本框的值
- javascript - 识别多个脚本的公共变量
- visual-studio-code - 空手道,VScode:“运行空手道测试”codelens 未显示
- ios - iOS 中 varispeed 与 RemoteIO 的连接
- c# - 如何在 linux ubuntu 服务器(18.06)中执行 .exe 文件
- java - 我如何将文件读取为字节然后在java(android)中将其编码为base64
- regex - 找到一个字符和一个新行,并将它们保留在前一行在 VBA 中