神经网络输入/输出

3 投票
4 回答
775 浏览
提问于 2025-04-15 13:16

有没有人能给我解释一下,怎么处理更复杂的数据集,比如团队统计、天气、骰子、复杂的数字类型?

我明白所有的数学原理和运作方式,只是不知道怎么输入这些复杂的数据,然后又该怎么读取它输出的结果。

如果有人能提供一些Python的例子,那就太好了。

4 个回答

0

更复杂的数据通常意味着在输入层和输出层增加更多的神经元。

你可以把每个“字段”都转化成一个真实的数值(比如经过标准化处理等),然后把这些数值输入到每个神经元里。或者你甚至可以把数据拆分得更细,把每个字段分成比特位,给神经元输入饱和的1或0。至于输出部分,这就要看你是怎么训练神经网络的,它会努力模仿你用来训练的那些数据的输出结果。

2

你的特征需要拆分成可以用真实数字表示的部分。神经网络的神奇之处在于,它就像一个黑箱,在训练过程中会自动找到正确的关联(通过内部的权重)。


输入

选择尽可能少的特征来准确描述情况,然后把每个特征拆分成一组真实的数字。

  • 天气: [今天的温度,今天的湿度,昨天的温度,昨天的湿度...] 今天的温度和今天的湿度之间的关系会在内部建立
  • 团队统计: [平均身高,平均体重,最高身高,最高得分,...]
  • 骰子: 这个我不太明白,你是说如何编码离散值吗?*
  • 复数: [a,ai,b,bi,...]

* 离散值特征比较复杂,但仍然可以编码为 (0.0, 1.0)。问题是它们没有提供学习阈值的梯度。


输出

你决定输出的含义,然后把你的训练示例按照这个格式编码。输出值越少,训练起来就越简单。

  • 天气: [明天下雨的概率,明天的温度,...] **
  • 团队统计: [获胜的概率,获胜超过20分的概率,...]
  • 复数: [x,xi,...]

** 在这里,你的训练向量会是:如果第二天下雨就是1.0,如果没下雨就是0.0。


当然,问题是否真的可以用神经网络来建模是另一个问题。

3

你需要把输入和输出转换成神经网络可以理解的格式。比如说,如果你想表示“x具有某种属性p”,可以用1来表示;如果表示“x没有属性p”,就用-1来表示(前提是你的神经元的输出范围在[-1, 1]之间)。

你如何编码输入和解码输出,取决于你想让神经网络学习什么内容。

而且,不同的任务有很多种“神经网络”算法和学习规则,比如反向传播、玻尔兹曼机、自组织映射等。

撰写回答