当前位置: 首页 > 知识库问答 >
问题:

如何为Keras准备数据集?

冯风史
2023-03-14

通过Keras神经网络运行一组标记向量。

查看Keras数据集示例mnist:

keras.datasets import mnist
(x_tr, y_tr), (x_te, y_te) = mnist.load_data()
print x_tr.shape

它似乎是一个三维Numpy数组

(60000, 28, 28)
  • 第一个维度用于样本
  • 每个示例功能的第二个和第三个

构建标记向量:

X_train = numpy.array([[1] * 128] * (10 ** 4) + [[0] * 128] * (10 ** 4))
X_test = numpy.array([[1] * 128] * (10 ** 2) + [[0] * 128] * (10 ** 2))

Y_train = numpy.array([True] * (10 ** 4) + [False] * (10 ** 4))
Y_test = numpy.array([True] * (10 ** 2) + [False] * (10 ** 2))

X_train = X_train.astype("float32")
X_test = X_test.astype("float32")

Y_train = Y_train.astype("bool")
Y_test = Y_test.astype("bool")
model = Sequential()
model.add(Dense(128, 50))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(50, 50))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(50, 1))
model.add(Activation('softmax'))

rms = RMSprop()
model.compile(loss='binary_crossentropy', optimizer=rms)

model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
          show_accuracy=True, verbose=2, validation_data=(X_test, Y_test))

score = model.evaluate(X_test, Y_test, show_accuracy=True, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])
Test score: 13.9705320154
Test accuracy: 1.0

为什么对于如此简单的数据集,我会得到如此糟糕的结果?我的数据集是否格式错误?

谢谢

共有1个答案

程树
2023-03-14

仅在一个输出节点上使用softmax没有多大意义。如果您更改模型。将(激活('softmax'))添加到模型。添加(激活('sigmoid')),您的网络性能良好。

或者,您也可以使用两个输出节点,其中1,0表示True的情况,0,1表示False的情况。然后可以使用softmax层。您只需相应地更改您的Y\u训练Y\u测试

 类似资料:
  • 我想预测具有以下形式的数据分类: 分类器;文本描述 null

  • 启动Mysql控制台, 建立数据库 create database nutzbook default character set utf8; 运行后的截图

  • PS:我使用的是Apache Spark 1.6.3

  • 问题内容: 我看到imageDataGenerator允许我指定不同样式的数据规范化,例如featurewise_center,samplewise_center等。 从示例中可以看到,如果我指定了这些选项之一,则需要在生成器上调用fit方法,以允许生成器计算统计信息,例如生成器上的均值图像。 我的问题是,如果我在训练期间指定了数据归一化,预测将如何工作?我看不到如何在框架中传递训练集均值/标准差

  • 我正在尝试使用spacy为自定义命名实体识别准备一个训练数据集。我的数据有一个变量“Text”,其中包含一些句子,一个变量“Names”,其中包含前一个变量(句子)中的人名。在阅读了一些示例和spacy的文档之后,我意识到在准备数据集时必须传递实体的索引。我想知道在准备数据集时,是否有任何方法可以直接将实体作为字符串传递? 参考资料:“https://medium.com/@manivannan_

  • 我在一个项目中使用Keras,我不明白Keras是如何使用数据输入的,也就是说Keras在创建第一层时是如何读取我们的输入数据的。 例如: 型号=顺序() 在这个模型中,有10个神经元和一个三维输入意味着什么?如果输入数据有100个示例(矩阵数据中的行数),Keras如何使用它们? 非常感谢。