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

执行model.fit时Jupyter内核崩溃自动重启,tf.keras.Sequential模型求助

解决Jupyter执行model.fit时内核崩溃的问题

内核崩溃重启最常见的原因是内存过载、数据异常或环境兼容问题,以下是针对性的排查和解决步骤:

1. 排查内存不足问题

  • 减小batch_size:当前设置的batch_size=20可能超出了内存承载上限,先尝试将其降低到8、4甚至1,观察是否还会崩溃。
  • 限制GPU内存增长(如果使用GPU):TensorFlow默认会占用全部GPU显存,手动开启内存动态分配可以避免显存耗尽:
    gpus = tf.config.experimental.list_physical_devices('GPU')
    if gpus:
        try:
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
        except RuntimeError as e:
            print(e)
    
  • 清理系统内存:关闭其他占用内存的程序(如浏览器、大型软件),释放系统资源后重新运行。

2. 检查数据异常与格式匹配

  • 验证数据类型:确保输入数据为TensorFlow偏好的float32类型,避免因数据类型不匹配导致内存浪费或计算错误:
    print(Xc_train.dtype, yc_train.dtype)
    # 转换类型
    Xc_train = Xc_train.astype('float32')
    Xc_val = Xc_val.astype('float32')
    
  • 检查异常值:数据中的NaN、无穷值会导致计算崩溃,执行以下代码排查并清理:
    import numpy as np
    print(np.isnan(Xc_train).any(), np.isinf(Xc_train).any())
    # 清理异常值(示例)
    Xc_train = Xc_train[~np.isnan(Xc_train).any(axis=1)]
    yc_train = yc_train[~np.isnan(Xc_train).any(axis=1)]
    
  • 匹配损失函数与标签格式:如果yc_train是整数形式的类别标签(而非独热编码),必须改用sparse_categorical_crossentropy作为损失函数,否则会引发维度不匹配的底层错误:
    model_class.compile(loss="sparse_categorical_crossentropy", metrics=["accuracy"], optimizer="sgd")
    

3. 排查环境兼容问题

  • 验证TF与CUDA/cuDNN版本匹配:版本不兼容会导致底层计算库出错,卸载当前TensorFlow后,重新安装与本地CUDA版本对应的TF版本(如TF2.10对应CUDA11.2)。
  • 重启测试:彻底关闭Jupyter并重启电脑,清除环境缓存后再运行代码。
  • 测试极简模型:先运行一个极小的测试模型,确认模型结构本身无问题:
    test_model = tf.keras.models.Sequential()
    test_model.add(tf.keras.layers.Dense(2, activation='relu'))
    test_model.add(tf.keras.layers.Dense(2, activation='softmax'))
    test_model.compile(loss="categorical_crossentropy", optimizer="sgd")
    test_model.fit(np.random.rand(10,5), np.eye(10,2), batch_size=2, epochs=1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:12