首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CNN-Bug Generell问题

CNN-Bug Generell问题
EN

Stack Overflow用户
提问于 2020-09-05 07:19:17
回答 1查看 46关注 0票数 1

我目前正在用Cifar-10数据集做一个小的CNN节目。我只是在这里和那里更新我的代码,现在它不起作用了。我想不出这个错误。这个预测告诉我“不是一个数字”。我的问题找不到答案。所以我不能在不添加更多文本的情况下发布这个问题。我应该在这里写些什么。现在吃一顿好早餐就好了。咖啡和馅饼都是这样的。我希望我现在能提出这个问题。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-05 08:34:36

您的模型中有一些错误:

多类问题的输出层必须具有与具有softmax激活函数的类数相等的维数。

多类问题的标准损失是categorical_crossentropysparse_categoricalcrossentropy。当您的目标是一个热编码时,可以使用categorical_crossentropy,当您有整数编码标签时可以使用sparse_categoricalcrossentropy (这就是您的情况)。

代码语言:javascript
运行
复制
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() 

在这里,正在运行的笔记本

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63751445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档