python - Lambda 输出层

标签 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 必须是列表、元组或函数”。

最佳答案

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,)))
    

这是可微的,对 SGD 友好。

关于python - Lambda 输出层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40248427/

相关文章:

python - keras中的反向词嵌入 - python

machine-learning - 使用 softmax 进行事件正则化?

performance - keras 预测很慢

python - 我如何从python中的给定字符生成英文单词

python - 使用Python通过下拉菜单+按钮进行抓取

Python 找不到已安装的(用户站 pip )应用程序

python - Django:请求页面时异步加载数据?

c++ - 神经网络反向传播实现问题

python - 构建 pygpu 成功但导入 pygpu 失败

python - 为什么这个最小的 RNN 代码会针对从未使用过的类型抛出类型错误?