【问题标题】:Using a custom filter in convolution layer for tensorflow在卷积层中使用自定义过滤器进行张量流
【发布时间】:2017-05-21 14:55:33
【问题描述】:

我一直在从各种教程中学习 Tensorflow,我想知道是否可以定义一个自定义过滤器供卷积网络使用。例如,如果我知道特征中存在有意义的结构,使得所有其他特征都相关,我想定义一个看起来像 [0 1 0 1 0 1] 的过滤器。

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

到目前为止我看到的所有示例都使用:

tf.random_normal

tf.truncated_normal

用于过滤器参数。我可以将 [0 1 0 1] 放在 filter 参数中吗?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    你当然可以!您可以将任何(浮点)值放入卷积过滤器中。

    然而,卷积过滤器中的值通常是 变量,其值是 Tensorflow 在训练期间学习的,而不是 常量。 “tf.random_normal”和“tf.truncated_normal”值仅用于设置过滤器的初始值。这些变量的值将在训练期间通过梯度下降算法进行更新。

    有关使用卷积神经网络进行训练的示例,请查看此处的教程: https://www.tensorflow.org/versions/r0.9/tutorials/deep_cnn/index.html

    希望有帮助!

    【讨论】:

    • 使用变量有意义,因为我想我应该让网络学习关联而不是直接告诉它?
    • 是的,完全正确。通常过滤器的权重是你学习的。
    【解决方案2】:

    是的,但是 CNN 的重点是根据数据学习最好的内核。同样tf.conv2d 学习的不是一个内核,而是out_channels 内核。

    在 CNN 之前,人们实际上使用了各种kernels

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      相关资源
      最近更新 更多