【问题标题】:Error in last keras layer of neural network神经网络最后一个keras层错误
【发布时间】:2017-07-04 19:00:46
【问题描述】:

型号:

model = Sequential()
act = 'relu'
model.add(Dense(430, input_shape=(3,)))
model.add(Activation(act))

model.add(Dense(256))
model.add(Activation(act))
model.add(Dropout(0.4))

model.add(Dense(148))
model.add(Activation(act))
model.add(Dropout(0.3))

model.add(Dense(1))
model.add(Activation('softmax'))

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

错误: 检查目标时出错:预期 activation_4 的形状为 (None, 1) 但得到的数组的形状为 (1715, 2)

错误在神经网络的最后一层。神经网络试图对两种药物是否具有协同作用进行分类。 完整的源代码: https://github.com/tanmay-edgelord/Drug-Synergy-Models/blob/master/Drug%20Synergy%20NN%20Classifier.ipynb

数据: https://github.com/tanmay-edgelord/Drug-Synergy-Models/blob/master/train.csv

【问题讨论】:

  • 使用 TensorFlow 后端

标签: python-3.x neural-network keras


【解决方案1】:

在您的代码中,您有以下几行:

y_binary = to_categorical(Y[:])
y_train = y_binary[:split]
y_test = y_binary[split:]

to_categorical 将向量转换为 1-hot 向量。因此,由于您有两个类,它将每个数字转换为长度为 2 的向量(0 转换为 [1,0],1 转换为 [0,1])。所以你的最后一层需要定义如下:

model.add(Dense(2))
model.add(Activation('softmax'))

(请注意,我将 1 替换为 2)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2017-07-08
    • 2019-10-12
    • 2018-11-09
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多