由于 CNN 中的 tensorflow 版本支持导致 Keras 属性错误
Keras attribute error due to tensorflow version support in CNN
我正在研究卷积神经网络,但遇到错误
AttributeError: module 'keras.utils.generic_utils' has no attribute
'populate_dict_with_module_objects
这里是不包括对数据集的数据处理的代码。
我的 Keras 版本是 2.4.3,TensorFlow 是 2.5.0,python 是 3.8
我见过许多其他人面临类似问题,但我认为这与 TensorFlow 的兼容版本有关。我已经尝试了 3-4 个版本的 TensorFlow,但它们都给我带来了像上面这样的模糊错误。
我希望这个问题可以解决,否则我不知道我将如何继续使用网络
import pickle
import time
import os
import cv2
import random
import matplotlib.pyplot as plt
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Activation
model = Sequential()
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Flatten())
model.add(Dense(128, input_shape = X.shape[1:]), activation = 'relu')
model.add(Dense(4,activation = 'softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(X,Y, epochs =2, validation_split = 0.2)
如果您在同一导入中使用 tensorflow 2.x, you should not mix standalone keras and new tf.keras。您上面的代码应该按如下方式导入:(在 colab 中测试版本 2.4、2.5)。
import pickle, time, os ,cv2, random
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import (Conv2D, MaxPooling2D, Dense,
Flatten, Activation)
model = Sequential()
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Flatten())
model.add(Dense(128, activation = 'relu'))
model.add(Dense(4,activation = 'softmax'))
此外,请注意模型中间的 input_shape
没有任何效果(就像您在 Dense
层中所做的那样)。
我正在研究卷积神经网络,但遇到错误
AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects
这里是不包括对数据集的数据处理的代码。 我的 Keras 版本是 2.4.3,TensorFlow 是 2.5.0,python 是 3.8
我见过许多其他人面临类似问题,但我认为这与 TensorFlow 的兼容版本有关。我已经尝试了 3-4 个版本的 TensorFlow,但它们都给我带来了像上面这样的模糊错误。
我希望这个问题可以解决,否则我不知道我将如何继续使用网络
import pickle
import time
import os
import cv2
import random
import matplotlib.pyplot as plt
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Activation
model = Sequential()
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Flatten())
model.add(Dense(128, input_shape = X.shape[1:]), activation = 'relu')
model.add(Dense(4,activation = 'softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(X,Y, epochs =2, validation_split = 0.2)
如果您在同一导入中使用 tensorflow 2.x, you should not mix standalone keras and new tf.keras。您上面的代码应该按如下方式导入:(在 colab 中测试版本 2.4、2.5)。
import pickle, time, os ,cv2, random
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import (Conv2D, MaxPooling2D, Dense,
Flatten, Activation)
model = Sequential()
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Conv2D(64,(3,3), activation = 'relu'))
model.add(MaxPooling2D(2,2))
model.add(Flatten())
model.add(Dense(128, activation = 'relu'))
model.add(Dense(4,activation = 'softmax'))
此外,请注意模型中间的 input_shape
没有任何效果(就像您在 Dense
层中所做的那样)。