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

TensorFlow Keras调用l2正则化提示'l2'未定义错误求助

错误原因
  • 命名空间导入不匹配:你仅导入了tensorflow.keras.regularizers父模块,l2是该模块下的内置方法,没有单独导入到当前工作空间的前提下,无法直接调用l2()执行。
  • 代码存在两处笔误:
    • 正则化参数名拼写错误:正确参数名为kernel_regularizer,你写的kernal_regularizer拼写错误会导致正则化不生效
    • 优化器sgd未导入:修复l2报错后,后续会继续抛出NameError: name 'sgd' is not defined的错误
修复方案

你可以任选以下一种方式修复l2未定义的问题:

方案1:保留现有导入语句,调用时指定父模块

将Dense层参数里的l2(0.01)改为regularizers.l2(0.01),同时修正参数拼写即可。

方案2:单独导入l2方法

在现有导入代码中新增一行:

from tensorflow.keras.regularizers import l2

完成上面的修改后,还需要修复优化器的导入问题,同样可以二选一操作:

  • 全路径调用:将compile里的sgd改为tensorflow.keras.optimizers.SGD(learning_rate=0.01)(可根据需求调整学习率参数)
  • 单独导入:新增导入语句from tensorflow.keras.optimizers import SGD,将compile里的sgd改为SGD(learning_rate=0.01)
修复后完整可运行代码
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.regularizers import l2

model = Sequential()
model.add(Dense(units=10, input_shape=[784], activation='sigmoid', kernel_regularizer=l2(0.01)))
model.compile(optimizer=SGD(learning_rate=0.01), loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
model.fit(x_train, y_train, batch_size = 256, epochs=100, validation_data=(x_test, y_test))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:06:03