分类 对应的 全连结层、activation、loss 的选择

Dense(2, activation='softmax') 和 loss='sparse_categorical_crossentropy'
# 或者
Dense(1, activation='sigmoid') 和 loss='binary_crossentropy'

import pandas as pd
from keras.layers import Dense
import numpy as np
from keras.models import Sequential
from keras.utils.np_utils import to_categorical

n_cols = predictors.shape[1]
target_b = to_categorical(target)
model = Sequential()
model.add(Dense(6, activation='relu',input_shape=(n_cols,)  ))
model.add(Dense(2, activation='softmax') )
# 或者

# Dense(1, activation='sigmoid') 和 loss='binary_crossentropy'
model.compile(optimizer = 'adam', loss ='sparse_categorical_crossentropy',metrics=   ['accuracy'] )
model.fit(predictors, target_b, validation_split=.3)



import pandas as pd
from keras.layers import Dense
import numpy as np
from keras.models import Sequential
from keras.utils.np_utils import to_categorical

n_cols = predictors.shape[1]
#target_b = to_categorical(target)
target = label
model = Sequential()
model.add(Dense(6, activation='relu',input_shape=(n_cols,)  ))
# Dense(2, activation='softmax') 和 loss='sparse_categorical_crossentropy'
# 或者
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer = 'adam', loss ='binary_crossentropy',metrics=   ['accuracy'] )
model.fit(predictors, target_b, validation_split=.3)


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

y_train_softmax = to_categorical(y_train) # ont-hot
y_test_softmax = to_categorical(y_test)


#---------------------------------
#           Softmax
#---------------------------------
# loss: Softmax Cross Entropy Loss
input_tensor = Input(X.shape[1:])
x = input_tensor
x = Dropout(0.5)(x)
softmax = Dense(2, activation='softmax')
x = softmax(x)
model = Model(input_tensor, x)
model.compile(optimizer=SGD(1e-3),  # lr = 1e-3
              loss='categorical_crossentropy',
              metrics=['accuracy'])

softmax_weights, softmax_bias = softmax.get_weights()

history_softmax = model.fit(X_train, y_train_softmax, batch_size=128, epochs=5,
                            validation_data=(X_test, y_test_softmax))



#---------------------------------
#           Sigmoid
#---------------------------------
input_tensor = Input(X.shape[1:])
x = input_tensor
x = Dropout(0.5)(x)
sigmoid = Dense(1, activation='sigmoid')
x = sigmoid(x)
model = Model(input_tensor, x)
model.compile(optimizer=SGD(2e-3),  # lr = 2e-3
              loss='binary_crossentropy',
              metrics=['accuracy'])

# random init Sigmoid weights
# 随机初始化 Sigmoid 权重
history_sigmoid_2 = model.fit(X_train, y_train, batch_size=128, epochs=5, validation_data=(X_test, y_test))

参考

密集(2)和密集(1)之间的差异作为二元分类CNN的最后一层? - Thinbug在用于图像二进制分类的CNN中,输出的形状是(图像数量,1)还是(图像数量,2)?具体来说,这是CNNicon-default.png?t=LBL2https://www.thinbug.com/q/50808593

Keras - Softmax 与 Sigmoid 二分类问题分析 - AI备忘录主要分析 Sigmoid 和 Softmax 对于二分类问题,二者之间的差异性.曾涉及到 Sigmoid 和 Softmax 的问题一般用于交叉熵损失函数,如:[1] - 机器学习 - 交叉熵C...https://www.aiuai.cn/aifarm679.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiki_taka_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值