Keras多类网络的自定义目标函数

时间:2016-10-07 17:23:15

标签: neural-network tensorflow keras

我正在建立一个神经网络,将多个蓝牙RSSI值分类到某些位置。

例如,这是来自多个蓝牙接收器的标准化RSS输入:

[0.1, 0.6, 0, 0, 0, 0, 0, 0, 0.8, 0.6599999999999999, 0.9, 0.36317567567567566]

这将是输出,将其分类到一个位置:

[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]

这是模型:

# create model
model = Sequential()

# Input layer has 12 inputs and 24 neurons
model.add(Dense(24, input_dim=12, init='normal', activation='relu'))

# Output layer, has 11 outputs
model.add(Dense(11, init='uniform', activation='sigmoid'))

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

我用3226个训练样本训练网络,然后用263个额外样本进行测试。

在前50个时期之后,训练样本的准确度约为85%。然后,测试样品的准确度约为74%。

但如果继续训练,测试样本的准确度实际上会下降。多50个测试时期将使训练样本的准确率达到88%,测试样本的准确率达到62%。

我尝试了多个目标函数,但结果是一样的:我训练的越多,得到的就越差。

这可能是由于尝试太二元的损失函数造成的吗?

是否存在可用的损失函数,如果正确的类只具有最高值,则可以积极地奖励结果?

0 个答案:

没有答案