【问题标题】:Neural Network model神经网络模型
【发布时间】:2019-01-18 19:01:23
【问题描述】:

我有 6 列和 100 行的示例数据(所有值都是整数)。输入数据分为 20 个类别。这是我尝试构建的模型:

model = Sequential()
model.add(Dense(50,input_shape=X.shape[1:],activation='relu'))

model.add(Dense(20,activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', 
              metrics=['accuracy'])
model.summary()
model.fit(X, Y, epochs=1000, verbose=0)
predictions=model.predict(test_data)

但是,我收到一个错误:

Error when checking target: expected dense_2 to have shape (20,) but got array with shape (1,)

我有两个问题:

  1. 我做错了什么?
  2. 你能给我一个合适的架构吗?

【问题讨论】:

  • Y的形状是什么?
  • @giser_yugang 它是 (60,)。我是神经网络的新手。我做错了什么>
  • 您的标签数据应该是 one-hot 形式。使用keras.utils.to_categorical。一个例子:stackoverflow.com/questions/53874013/…

标签: python machine-learning keras neural-network deep-learning


【解决方案1】:

您需要使用to_categorical (docs) 将Y 转换为二进制类矩阵。

import sklearn.datasets
X,Y = sklearn.datasets.make_classification(n_samples=100, n_features=6, n_redundant=0,n_informative=6, n_classes=20)

import numpy as np
from keras import Sequential
from keras.layers import Dense
from keras.utils import to_categorical
from keras import backend as K
K.clear_session()

model = Sequential()
model.add(Dense(50,input_dim=X.shape[1],activation='softmax'))
model.add(Dense(20,activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', 
              metrics=['accuracy'])
model.summary()
model.fit(X, to_categorical(Y), epochs=1000, verbose=1) # <---

您也可以使用sklearn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2021-02-05
    • 2013-11-14
    相关资源
    最近更新 更多