Neural network S形函数输出

Neural network S形函数输出,neural-network,classification,sigmoid,Neural Network,Classification,Sigmoid,我有下面的神经网络模型 nn_classifier = Sequential() nn_classifier.add(Dense(output_dim = 16 ,activation='relu',input_dim = 13)) nn_classifier.add(Dense(output_dim = 16,activation='relu')) nn_classifier.add(Dense(output_dim = 1, activation = 'sigmoid')) nn_clas

我有下面的神经网络模型

nn_classifier = Sequential()
nn_classifier.add(Dense(output_dim = 16 ,activation='relu',input_dim = 13))
nn_classifier.add(Dense(output_dim = 16,activation='relu'))
nn_classifier.add(Dense(output_dim = 1, activation = 'sigmoid'))

nn_classifier.compile(optimizer = 'sgd', loss = 'binary_crossentropy', metrics=[tf.keras.metrics.BinaryAccuracy(threshold=0.5)])
model=nn_classifier.fit(X_train, Y_train ,validation_split=0.33, batch_size = 10, nb_epoch = 100)
Y_pred = nn_classifier.predict(X_test)

由于我在输出层中使用了sigmoid函数,所以我希望预测值(Y_pred)为0或1。但我得到一些十进制值。我的理解有误吗?

Sigmoid总是在[0,1]中给出一个值,您需要对该值进行四舍五入,这意味着修复一个阈值,如果它高于阈值,则为1,否则为0。

明白了。我想乙状结肠要么给0要么给1。所以它的给出在0到1之间。有没有办法在模型中设置一个阈值,如果预测值小于0.5,则为0,否则为1。你可以使用舍入函数。如果小于0.5,则为0,否则为1。你能给我看一段使用舍入函数的代码吗?np.argmax(Y_pred,axis=1)这应该有效。