数据集
import kerasprint(keras.__version__)mnist = keras.datasets.mnist(x_train,y_train),(x_test,y_test) = mnist.load_data()
归一化
x_train = keras.utils.normalize(x_train,axis=1)x_test = keras.utils.normalize(x_test,axis=1)
模型
model = keras.models.Sequential()model.add(keras.layers.Flatten(x_train))model.add(keras.layers.Dense(128,activation= keras.nn.relu))model.add(keras.layers.Dense(128,activation= keras.nn.relu))model.add(keras.layers.Dense(10,activation= keras.nn.softmax))model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics = ['accuracy'])model.fit(x_train,y_train,epochs=3)
错误:
Using TensorFlow backend.2.3.1Traceback (most recent call last): File "/Users/aditya/Desktop/Desktop/dataScience/Practice/OpenCV/FaceDetect/Hackathon/classMnist.py", line 28, in <module> model.add(keras.layers.Flatten(x_train)) File "/usr/local/lib/python3.7/site-packages/keras/layers/core.py", line 495, in __init__ self.data_format = K.normalize_data_format(data_format) File "/usr/local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 311, in normalize_data_format data_format = value.lower()AttributeError: 'numpy.ndarray' object has no attribute 'lower'
问题是Keras无法展平x_train。你知道为什么会抛出这个错误吗?
回答:
model.add(keras.layers.Flatten(x_train))
Keras创建了一个无法加载数据的网络。
model.fit(x_train,y_train,epochs=3)
数据已经被加载了。
所以你应该修改第一段代码:
model.add(keras.layers.Flatten())
并且你的代码还有其他错误:
# 错误model.add(keras.layers.Dense(128,activation= keras.nn.relu))# 正确model.add(keras.layers.Dense(128,activation= keras.backend.relu))