首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分类mnist二进制类

分类mnist二进制类
EN

Stack Overflow用户
提问于 2018-02-18 07:21:03
回答 1查看 1.5K关注 0票数 0

我想为MNIST数据集实现一个神经网络,我在网上找到了很多例子。但我想用一种不同的方法来研究这个问题:我想创建10个NN (作为类的数量),在这个NN中,我只对一个类和其他类进行分类(例如:第一个NN只分析"1“类与其他类)。这只是一个练习(我是python新手,我想学习)。

这是我实际的python代码,你有什么建议修改mi代码以获得我上面解释的类分离吗?

代码语言:javascript
运行
复制
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
import numpy
from keras.utils import np_utils
numpy.random.seed()


(X_train, y_train), (X_test, y_test) = mnist.load_data()

num_pixels = X_train.shape[1] * X_train.shape[2]
X_train.shape[1],X_train.shape[2],X_train.shape[3])
X_train = X_train.reshape(X_train.shape[0], num_pixels).astype('float32')
X_test = X_test.reshape(X_test.shape[0], num_pixels).astype('float32')

X_train = X_train / 255
X_test = X_test / 255
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
print(y_test)
num_classes = y_test.shape[1]
def baseline_model():
model = Sequential()
model.add(Dense(num_pixels, input_dim=num_pixels,           kernel_initializer='normal', activation='relu'))
model.add(Dense(num_classes, kernel_initializer='normal', activation='softmax'))        

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model


 model = baseline_model()

 model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=3,     batch_size=200, verbose=2)

 model.summary()
 scores = model.evaluate(X_test, y_test, verbose=1)
 print("Baseline Error: %.2f%%" % (100-scores[1]*100))
EN

回答 1

Stack Overflow用户

发布于 2018-02-18 17:32:04

首先,您应该将y_trainy_test转换为二进制输出。您将希望在循环中为这十个类中的每个类执行此操作,但下面是您如何为其中一个类执行此操作,例如5个:

代码语言:javascript
运行
复制
y_train_binary = (y_train == 5).astype(np.int)
y_test_binary = (y_test == 5).astype(np.int)

现在,每个y_train示例都是一个从1到10的数字,因此这里我们将其转换为0或1,以对应于正类是否正确。

然后,您需要调整模型的输出以支持二进制分类。这可以通过使用具有sigmoid激活和二进制交叉点损失的单个密集输出神经元来实现:

代码语言:javascript
运行
复制
model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))   
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48846894

复制
相关文章

相似问题

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