如何使用Keras搭建指定结构的二分类神经网络
实现方案
第2层激活函数选择说明
- 1个输出节点的二分类场景不能使用softmax激活:softmax的作用是对所有输出节点的结果做归一化,单节点输出经过softmax后永远为1,无法体现分类概率差异,完全失效
- 此处应选用
sigmoid激活函数,输出0~1之间的概率值,对应二分类的两类预测结果
数据预处理要求
你给出的X/Y矩阵尺寸为2320,对应320个样本、每个样本2个特征,需要先转置为(320, 2)的格式匹配Keras的输入规则;标签C尺寸为1320,直接转置为(320, 1)即可使用,无需额外编码转换。
网络搭建完整代码
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 初始化序列模型 model = Sequential() # 第0层(输入层,2个节点)+ 第1层(4个单元,linear激活) model.add(Dense(4, activation='linear', input_dim=2)) # 第2层(1个节点,sigmoid激活) model.add(Dense(1, activation='sigmoid')) # 编译模型,二分类采用二元交叉熵损失 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练示例,x_train为转置后的(320,2)特征矩阵,y_train为转置后的(320,1)标签矩阵 # model.fit(x_train, y_train, epochs=50, batch_size=16, validation_split=0.2)
特殊场景适配
如果你原始标签确实是2维one-hot格式(尺寸为2*320,每个样本对应[1,0]或[0,1]),且要求输出层必须为1个节点,只需先对one-hot标签做转换:取每个样本的最大值索引,得到单值标签后再输入模型训练即可。
内容的提问来源于stack exchange,提问作者Bogdan
相关产品推荐
相关产品推荐

