Lambda输出层

时间:2016-10-25 19:44:32

标签: python neural-network theano keras

对于单输出神经元,我有如下序列模型,线性激活函数(Keras默认值):

model = Sequential()
model.add( ...
...
model.add(Dense(100, activation='relu'))
model.add(Dense(1))

我需要将最终数字限制为100,所以我修改了上面的最后一行代码:

model.add(Lambda(lambda x: x%100, output_shape=(1)))
  • 这是对的吗? x在这里是否意味着我所期望的网络?
  • 我收到错误消息:“在Lambda中,output_shape必须是列表,元组或函数”。

1 个答案:

答案 0 :(得分:1)

output_shape=(1)应为output_shape=(1,)

顺便说一下,我认为以下替代方案更好:

  • 剪辑输出到[0.0, 100.0]

    #...
    model.add(Dense(1)) #-2nd line from code in question
    model.add(Lambda(lambda x: max(0., min(x,100.)), output_shape=(1,)))
    

这是一个连续的功能,而不是mod 100。

  • 使用缩放的sigmoid输出层。

    #...
    model.add(Dense(1), activation='sigmoid')
    model.add(Lambda(lambda x:x*100., output_shape=(1,)))
    

这是不同的,对新加坡友好。