You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无隐藏层的神经网络中使用3个神经元开展训练?

无隐藏层多神经元感知机实现说明

你提供的是单神经元感知机的经典可视化示例:
单神经元感知机结构

核心结论

可以在不添加隐藏层的情况下实现3个或5个神经元的训练,仅需调整输出层的神经元数量以及对应的权重矩阵维度即可。

结构逻辑

通常神经元计数不包含仅负责透传输入数据的输入层节点,无隐藏层的感知机所有可训练神经元都集中在输出层:

  • 你当前的代码是3输入→1个输出神经元的结构,对应权重矩阵维度为(3,1),总计3个可训练权重
  • 如需使用3个神经元训练,仅需将权重矩阵维度调整为(3,3),总计9个可训练权重,3个输入节点会分别和每个输出神经元连接
  • 如需使用5个神经元训练,将权重矩阵维度调整为(3,5)即可

扩展为多神经元后,相当于在原有单输出神经元的位置并列摆放3/5个结构完全相同的神经元,每个神经元都独立接收3个输入的信号、独立计算输出,不存在额外的隐藏层。

如果你的需求是保持最终只有1个输出,同时中间用3/5个神经元做特征处理,那么必须添加隐藏层,无隐藏层的网络没有中间神经元的部署位置。

3神经元无隐藏层参考代码

import numpy as np

def tanh(x):  
    return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))

def tanh_derivative(x):
    return 1-x**2

# 3维度输入,共8组训练样本
training_inputs = np.array([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]])
                          
# 3维度输出,对应3个输出神经元的预期结果
training_outputs = np.array([
    [1,0,0],
    [0,1,0],
    [0,0,1],
    [1,1,0],
    [0,1,1],
    [1,0,1],
    [1,1,1],
    [0,0,0]
])

# 3输入3输出的权重矩阵,共3*3=9个可训练权重
synaptic_weights = 2 * np.random.random((3, 3)) - 1 
print('随机初始化权重 :{}'.format(synaptic_weights))

for i in range(20000):
    input_layer = training_inputs
    outputs = tanh(np.dot(input_layer, synaptic_weights))
    error = training_outputs - outputs
    weight_adjust = error * tanh_derivative(outputs)
    
    synaptic_weights += np.dot(input_layer.T, weight_adjust)

print('训练后权重: {}'.format(synaptic_weights))
print('\n')
print('训练后输出结果 :\n{}'.format(outputs))

内容的提问来源于stack exchange,提问作者Parzival

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:36:02