keras使用激活层而不是激活参数

时间:2017-04-06 22:33:42

标签: python machine-learning neural-network keras

Keras有一个激活层。

似乎这段代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "itemRowCell", for: indexPath) as! ItemRowCell
    let (description, quantity) = self.currentItems[indexPath.row]

    cell.itemDescription.text = description
    cell.quantity.text = String(quantity)

    return cell
}

和这一个:

  model.add(Convolution2D(64, 3, 3))
  model.add(Activation('relu'))

产生相同的结果。

此附加激活图层的目的是什么?

[Upgr:2017-04-10]上述两种情况的表现是否存在差异?

1 个答案:

答案 0 :(得分:8)

正如您所看到的,两种方法都是等价的。我将向您展示一些可能有助于此层的方案:

  1. 相同的图层 - 不同的激活 - 您可以轻松想象一个网络,您希望将不同的激活应用于同一输出。没有Activation,这是不可能的。
  2. 激活前需要输出 - 例如在 siamese networks 中,您使用softmax作为最终激活来训练您的网络 - 但最终 - 您希望拥有所谓的logits - 反softmax功能。没有可能困难的额外Activation层。
  3. 显着性图中的
  4. 显着性图 - 类似于前一点中的内容 - 在激活之前还需要输出以计算渐变w.r.t.对它 - 没有Activation它是不可能的。
  5. 正如您所看到的那样 - 缺少Activation会在激活之前输出图层,最终激活会强烈耦合。这就是Activation可能非常有用的原因 - 因为它打破了这种联系。