machine-learning - 如何在tensorflow中使用tf.nn.crelu?

标签 machine-learning tensorflow computer-vision activation-function

我正在我的简单神经网络中尝试不同的激活函数。

使用tf.nn.relutf.nn.sigmoid,...网络会做它应该做的事情。

但是如果我使用tf.nn.crelu,则会出现尺寸错误。

它返回类似[max, min]的内容,并且宽度尺寸大两倍。 我需要做什么?将以下权重和偏差拟合到 crelu 的输出?

最佳答案

你是对的,如果您手动构建网络,则需要调整下一层的尺寸以匹配 tf.nn.crelu 输出。从这个意义上说,tf.nn.crelu不能tf.nn.relutf.nn.elu互换

如果您使用高级 API,情况会更简单,例如tensorflow slim 。在这种情况下,图层函数负责匹配维度,因此您可以在代码中轻松地将 tf.nn.relu 替换为 tf.nn.crelu/em>。但是,请记住,网络正在悄然变得两倍大。

这是一个例子:

with slim.arg_scope([slim.conv2d, slim.fully_connected],
                    activation_fn=tf.nn.crelu,
                    normalizer_fn=slim.batch_norm,
                    normalizer_params={'is_training': is_training, 'decay': 0.95}):
    conv1 = slim.conv2d(x_image, 16, [5, 5], scope='conv1')
    pool1 = slim.max_pool2d(conv1, [2, 2], scope='pool1')
    conv2 = slim.conv2d(pool1, 32, [5, 5], scope='conv2')
    pool2 = slim.max_pool2d(conv2, [2, 2], scope='pool2')
    flatten = slim.flatten(pool2)
    fc = slim.fully_connected(flatten, 1024, scope='fc1')
    drop = slim.dropout(fc, keep_prob=keep_prob)
    logits = slim.fully_connected(drop, 10, activation_fn=None, scope='logits')

slim.arg_scope 只是将所有提供的参数应用于底层,特别是activation_fn。另请注意最后一层中的 activation_fn=None 以固定输出维度。完整代码可以是found here .

关于machine-learning - 如何在tensorflow中使用tf.nn.crelu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721663/

相关文章:

c++ - 条件随机场

python - 尝试 reshape 数组时出错

python - 如何在 TensorFlow 中打印 SparseTensor 内容?

python - Keras function api,手动设置权重到层

python - 如何量化 cartToPolar 输出以估计连续帧之间的流量 Python OpenCV?

machine-learning - Rapid Miner 中的 k 均值质心图实际上意味着什么(通俗地说)?

machine-learning - 如何在 Twitter 数据上形成 LDA 文档

python - 错误 : Error when checking model input: expected dense_input_6 to have shape (None, 784) 但得到形状为 (784L, 1L) 的数组

python - 处理 scikit-learn tree.decisiontreeclassifier 中的维度

c++ - 解决PnP : Obtaining the rotation translation matrix