在以下场景中使用哪个Keras输出层/丢失函数



我得到了以下数据样本:

[1,2,1,4,5],[1,2,1,4,5],[0,2,7,0,1] with a label of [1,0,1] 
....
[1,9,1,4,5],[1,5,1,4,5],[0,7,7,0,1] with a label of [0,1,1] 

我不能在标签为1或0的[1,2,1,4,5]的单个序列上训练它,因为整行都得到了有意义的上下文信息,所以应该将整个15个输入数字推断在一起。

这不是典型的分类,也不是回归问题。此外,这些数据与图像无关,而是来自科学领域。

显然,我将数据作为平面15输入节点馈送到网络

model = Sequential(
[
Dense(units=16,input_shape = scaled_train_samples[0].shape,activation='relu'),                
Dense(units=32,activation='relu'),
Dense(units=3,activation='???'),
])

在这种情况下,哪种激活输出功能是理想的?

我建议有3个网络输出。由于数据可以影响3〃;子标签";,网络仅在分类层上分支开。如果需要,可以为每个特定分支添加更多层。

我假设每个";子标签";是二进制分类,所以这就是为什么我选择sigmoid(返回从0到1的值,所以较大的数字意味着网络认为它是1类而不是0类(

要做到这一点,您必须更改为功能API,如下所示:

from keras.layers import Input, Dense
from keras.models import Model
visible = Input(shape=(scaled_train_samples[0].shape))
model = Dense(16, input_shape = activation='relu')(visible)
model = Dense(32,activation='relu')(model)
model = Dense(16,activation='relu')(model)
out1 = Dense(units=1,activation='sigmoid',name='OUT1')(model)
out2 = Dense(units=1,activation='sigmoid',name='OUT2')(model)
out3 = Dense(units=1,activation='sigmoid',name='OUT3')(model)
finalModel = Model(inputs=visible outputs=[out1, out2, out3])
optimizer = Adam(learning_rate=.0001)
losses = {
'OUT1': 'binary_crossentropy',
'OUT2': 'binary_crossentropy',
'OUT3': 'binary_crossentropy',
}
model.compile(optimizer=optimizer, loss=losses, metrics={'OUT1':'accuracy', 'OUT2':'accuracy', 'OUT3':'accuracy'})

最新更新