咩都冇知 2024-10-09 13:39 采纳率: 50%
浏览 36

关于CNN分类网络中的keras报错问题


import numpy as np
import sklearn.model_selection
import sklearn.metrics
import os
import cv2
import matplotlib.pyplot as plt
import pandas as pd
import tensorflow
import glob
import keras.layers
import keras.layers.normalization
#from tensorflow.keras.layers import normalization
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
import csv

发生如下报错
```python

024-10-09 13:35:12.537987: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-10-09 13:35:13.916814: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
Traceback (most recent call last):
  File "d:\yanjiusheng\liuliangshuju\CNN_class.py", line 11, in <module>
    import keras.layers.normalization
ModuleNotFoundError: No module named 'keras.layers.normalization'

keras和tensorflow均为最新版本

  • 写回答

1条回答 默认 最新

  • 撸码了个大谱¥ 2024-10-09 15:00
    关注

    您遇到的报错信息表明,您的代码试图导入一个不存在的模块 keras.layers.normalization。在较新版本的 Keras(特别是从 TensorFlow 2.x 开始集成的 Keras)中,normalization 模块已经不再位于 keras.layers 下,或者其功能和命名可能已经发生了变化。

    在 TensorFlow 2.x 和 Keras 的最新版本中,通常使用 tf.keras.layers.BatchNormalization 或 tf.keras.layers.LayerNormalization 等来进行层的归一化。这些归一化层应该直接从 tf.keras.layers 导入。

    解决方法
    更新导入语句:
    如果您的代码是基于旧版本的 Keras 编写的,您需要更新归一化层的导入语句。例如,如果您想使用批量归一化,应该这样写:
    python
    from tensorflow.keras.layers import BatchNormalization
    而不是:

    python
    import keras.layers.normalization # 这是错误的
    检查 Keras 版本:
    确保您正在使用的 Keras 版本与您的代码兼容。如果您正在使用 TensorFlow 2.x,那么您应该使用 tf.keras 而不是单独的 keras 包(除非您特意安装了与 TensorFlow 分离的 Keras 版本)。
    更新代码:
    如果可能,更新您的整个代码库以使用最新的 TensorFlow 和 Keras API。这将有助于避免未来的兼容性问题,并可能使您的代码更加高效和易于维护。
    环境变量:
    关于报错信息中提到的 oneDNN,这是一个优化库,用于加速深度学习模型的计算。如果您不希望看到关于 oneDNN 的消息,可以通过设置环境变量 TF_ENABLE_ONEDNN_OPTS=0 来禁用这些消息。但这与您的 ModuleNotFoundError 无关。
    检查依赖项:
    确保您的环境中安装了正确版本的 TensorFlow。您可以使用 pip show tensorflow 来检查已安装的版本。
    通过应用上述建议,您应该能够解决遇到的 ModuleNotFoundError 并使您的 CNN 分类网络代码与最新版本的 Keras 兼容。
    仅参考。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月9日