python - CNN-Bug Generell 问题
问题描述
我目前正在使用 Cifar-10 数据集开发一个小型 CNN。我只是在这里和那里更新了我的代码,现在它不起作用。我无法弄清楚错误。预测告诉我“不是数字”。找不到我的问题的答案。所以我不能在不添加更多文字的情况下发布问题。Idk 我应该在这里写什么。一个好的早餐现在会很好。咖啡和煎饼之类的。我希望我现在可以发布问题。
from keras.datasets import cifar10
import numpy as np
(x_training, y_training), (x_test,y_test) = cifar10.load_data()
x_training = x_training / 255.0
x_test = x_test / 255.0
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(x_training[3])
plt.show
from keras.models import Sequential
from keras.layers import Dense, Flatten,Conv2D , MaxPooling2D, Dropout
import tensorflow as tf
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), input_shape=(32, 32, 3), activation="relu", padding="same"))
model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(Conv2D(64, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(Conv2D(128, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizer='RMSProp', loss="binary_crossentropy", metrics=['accuracy'])
model.summary()
model.fit(x_training, y_training,batch_size=128, epochs=10, shuffle = True )
model.evaluate(x_training, y_training)
results = model.predict(x_training[1].reshape(-1, 32, 32, 3))
results
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
'dog', 'frog', 'horse', 'ship', 'truck']
max = np.max(results)
max_position = np.argmax(results)
class_name_predict = class_names[max_position]
plt.imshow(x_training[1])
plt.show
test = class_name_predict
test
plt.imshow(x_training[1])
plt.show
x = class_names[y_training[1][0]]
x
解决方案
您的模型中有一些错误:
多类问题的输出层的维度必须等于具有 softmax 激活函数的类数
多类问题的标准损失是categorical_crossentropy
和sparse_categoricalcrossentropy
。categorical_crossentropy
当你的目标是单热编码sparse_categoricalcrossentropy
时可以使用,当你有整数编码标签时使用(这是你的情况)
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), input_shape=(32, 32, 3), activation="relu", padding="same"))
model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(Conv2D(64, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(128, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(Conv2D(128, kernel_size=(3, 3), activation="relu", padding="same"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(len(class_names), activation="softmax"))
model.compile(optimizer='RMSProp', loss="sparse_categorical_crossentropy", metrics=['accuracy'])
model.summary()
推荐阅读
- python - 如何在元组中找到列表的唯一标识符?
- flutter - 在 Dart 中,如何复制/克隆 2D 列表?
- reactjs - 反应路由器,如何在 url 更改时刷新页面?
- graphql - Strapi 错误错误:无法使用来自另一个模块或领域的 GraphQLObjectType“查询”
- c# - 如何在 C# 中使用 Azure Kinect 身体跟踪 SDK 1.1.0?
- nginx - 别名域返回 400 错误与 ssl_handshake 有关
- huggingface-transformers - 如何基于transformer计算单词相似度?
- python - 该模型在 Tensorflow 到 CoreML 模型中没有有效的图像类型输入特征
- mysql - mysql - vs代码中缺少“运行SQL”命令
- c++ - 模板争吵