我正在尝试用tf keras进行多类分类。我总共有20个标签,我的总数据是63952
,我尝试了以下代码
features = features.astype(float)
labels = df_test["label"].values
encoder = LabelEncoder()
encoder.fit(labels)
encoded_Y = encoder.transform(labels)
dummy_y = np_utils.to_categorical(encoded_Y)
然后
def baseline_model():
model = Sequential()
model.add(Dense(50, input_dim=3, activation='relu'))
model.add(Dense(40, activation='softmax'))
model.add(Dense(30, activation='softmax'))
model.add(Dense(20, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
最后
history = model.fit(data,dummy_y,
epochs=5000,
batch_size=50,
validation_split=0.3,
shuffle=True,
callbacks=[ch]).history
我对此的把握很差。我该如何改进?
softmax
在中间层的激活根本没有任何意义。将它们全部更改为relu
,并将softmax
仅保留在最后一层中。
完成后,如果您仍然获得不令人满意的精度,请在短时期(例如~50(内尝试不同的架构(不同数量的层和节点(,以便了解您的模型的行为,然后再与您的5000个时期完全匹配。
您没有向我们提供重要信息,但以下是一些指导原则:
1。减少Dense
层的数量-您有一个包含少量数据的复杂层(63k有点小(。您可能会对列车数据进行过拟合
2.你检查过测试是否与你的火车分布相同吗
3.避免在中间Dense
层使用softmax-softmax应在最后一层使用,而应使用sigmoid或relu
4.将损失绘制为历元曲线的函数,并检查它是否减少——然后你就可以理解你的学习率是过高还是过低。