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

基于Keras等库训练拟合洛伦兹混沌系统的神经网络报错求助

问题解决方案

核心错误原因

  • 自定义激活函数中使用K.eval(x)尝试将计算图张量转换为numpy数组,Keras在构建计算图阶段张量没有对应的numpy属性,且不允许用numpy函数直接操作计算图内的张量
  • 损失函数选择不符合任务类型:当前是拟合三维坐标连续值的回归任务,不能使用多分类任务的交叉熵损失
  • 输出层维度不匹配:预测目标是3维坐标,最后一层全连接层输出维度设置为10不符合要求

修正代码片段

## 修正后的自定义激活函数,全部使用Keras后端张量运算,不涉及numpy转换
def logsig(x):
    return 1 / (1 + K.exp(-x))

def radbas(x):
    return K.exp(-K.square(x))

def purelin(x):
    return x

# 修正模型结构和编译参数
model = Sequential()
model.add(Dense(10, activation=logsig))
model.add(Dense(10, activation=radbas))
model.add(Dense(3, activation=purelin)) # 输出维度匹配X/Y/Z三个维度

sgd_optimizer = optimizers.SGD(momentum=0.9)
model.compile(optimizer=sgd_optimizer, loss='mse') # 回归任务使用均方误差损失
model.fit(nn_input, nn_output, epochs=30, batch_size=32)

修改说明

  • 所有激活函数内的运算都替换为Keras后端提供的张量运算接口,全程在计算图内完成运算,不会触发张量转numpy的操作,直接解决属性报错问题
  • 输出层维度调整为3,和预测目标的维度对齐
  • 损失函数替换为均方误差,匹配回归任务的优化目标,训练过程不会出现无意义的损失值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:36:03