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

TensorFlow搭建Simple Neural Network训练XNOR门出现维度不兼容报错

报错原因

  • 输入维度不匹配:你的训练输入training_inputs每条样本包含3个特征,整体数据集形状为(8,3),但定义输入层时input_shape=[1]要求输入特征数为1,维度不匹配直接触发兼容性报错。
  • 网络结构不适配任务:仅用单层无激活函数的全连接层是线性模型,无法拟合XNOR门的非线性逻辑,即便修正维度问题也无法得到正确的训练结果。

解决方案

修正后完整代码

import tensorflow as tf
import numpy as np

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]],dtype=float)
training_outputs = np.array([1,0,0,1,0,1,1,0],dtype=float)

# 调整网络结构适配输入维度与非线性任务
model = tf.keras.Sequential([
  tf.keras.layers.Dense(units=8, input_shape=[3], activation='relu'),
  tf.keras.layers.Dense(units=1, activation='sigmoid')
])

model.compile(loss='mean_squared_error',
              optimizer=tf.keras.optimizers.Adam(0.01))

history = model.fit(training_inputs, training_outputs , epochs=1000, verbose=False)

# 验证输出结果
print(model.predict(training_inputs, verbose=False).round())

核心改动说明

  • 将输入层input_shape从[1]修改为[3],匹配输入样本的3个特征,解决维度不匹配报错。
  • 新增带relu激活函数的隐藏层,引入非线性拟合能力,适配XNOR门的非线性逻辑。
  • 输出层添加sigmoid激活函数,将输出值限制在0-1区间,匹配二分类标注的取值范围。
  • 适当调小学习率、增加训练轮次,保证模型可以充分收敛。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:07