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

如何修复Keras优化器报错:ValueError: decay is deprecated

解决方案

方法一:修改canaro源码中的优化器配置

  1. 定位canaro的安装路径
    在Kaggle Notebook中运行以下命令查看canaro的安装位置:
!pip show canaro

输出里的Location字段就是安装目录,比如/opt/conda/lib/python3.10/site-packages/canaro

  1. 打开models.py文件编辑
    运行以下命令打开模型定义文件(替换为你的实际路径):
%edit /opt/conda/lib/python3.10/site-packages/canaro/models.py
  1. 找到createSimpsonsModel函数中的优化器代码
    在函数内部找到创建SGD优化器的代码块,通常类似:
optimizer = tf.keras.optimizers.SGD(
    learning_rate=learning_rate,
    momentum=momentum,
    decay=decay,
    nesterov=nesterov
)
  1. 修改优化器配置(二选一)
  • 选项A:使用legacy版本的SGD(兼容旧的decay参数)
    将优化器替换为legacy版本:
optimizer = tf.keras.optimizers.legacy.SGD(
    learning_rate=learning_rate,
    momentum=momentum,
    decay=decay,
    nesterov=nesterov
)
  • 选项B:适配新Keras的weight_decay参数
    将decay参数替换为新的weight_decay:
optimizer = tf.keras.optimizers.SGD(
    learning_rate=learning_rate,
    momentum=momentum,
    weight_decay=decay,
    nesterov=nesterov
)
  1. 保存修改并重启内核
    修改完成后保存文件,然后重启Kaggle Notebook的内核,重新导入canaro模块即可生效。

方法二:自定义模型函数(无需修改第三方源码)

如果你不想修改canaro的源码,可以直接复制createSimpsonsModel的完整代码到自己的Notebook中,修改其中的优化器部分,然后调用自定义函数创建模型:

import tensorflow as tf
from tensorflow.keras import layers, models

def custom_createSimpsonsModel(IMG_SIZE, channels, output_dim, loss='binary_crossentropy', decay=1e-6, learning_rate=0.001, momentum=0.9, nesterov=True):
    # 复制原createSimpsonsModel的网络结构代码
    model = models.Sequential()
    # 原模型的卷积层、池化层等结构(直接复制源码中的对应部分)
    model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(IMG_SIZE, IMG_SIZE, channels)))
    model.add(layers.MaxPooling2D((2,2)))
    model.add(layers.Conv2D(64, (3,3), activation='relu'))
    model.add(layers.MaxPooling2D((2,2)))
    model.add(layers.Conv2D(128, (3,3), activation='relu'))
    model.add(layers.MaxPooling2D((2,2)))
    model.add(layers.Flatten())
    model.add(layers.Dense(512, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(output_dim, activation='softmax'))
    
    # 修改优化器部分
    optimizer = tf.keras.optimizers.legacy.SGD(
        learning_rate=learning_rate,
        momentum=momentum,
        decay=decay,
        nesterov=nesterov
    )
    
    model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])
    return model

# 调用自定义函数创建模型
model = custom_createSimpsonsModel(
    IMG_SIZE=IMG_SIZE, 
    channels=channel, 
    output_dim=len(characters), 
    loss='binary_crossentropy', 
    decay=1e-6, 
    learning_rate=0.001, 
    momentum=0.9, 
    nesterov=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:12:32