如何在tensorflow中使用tf.nn.crelu?
How to use tf.nn.crelu in tensorflow?
我正在我的简单神经网络中尝试不同的激活函数。
使用 tf.nn.relu
、tf.nn.sigmoid
没关系,...网络会做它应该做的事情。
但是如果我使用 tf.nn.crelu
,我有尺寸错误。
它 returns 类似于 [max, min]
并且宽度尺寸是原来的两倍。
我需要做什么?将以下权重和偏差拟合到 crelu
?
的输出
没错,如果您手动构建网络,则需要调整下一层的尺寸以匹配 tf.nn.crelu
输出。从这个意义上说,tf.nn.crelu
不能 与 tf.nn.relu
、tf.nn.elu
等
互换。
如果使用高级 API,情况会更简单,例如tensorflow slim。在这种情况下,图层函数负责匹配维度,因此您可以在 code 中轻松地将 tf.nn.relu
替换为 tf.nn.crelu
。但是,请记住,网络正在悄悄地变大一倍。
这是一个例子:
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.
我正在我的简单神经网络中尝试不同的激活函数。
使用 tf.nn.relu
、tf.nn.sigmoid
没关系,...网络会做它应该做的事情。
但是如果我使用 tf.nn.crelu
,我有尺寸错误。
它 returns 类似于 [max, min]
并且宽度尺寸是原来的两倍。
我需要做什么?将以下权重和偏差拟合到 crelu
?
没错,如果您手动构建网络,则需要调整下一层的尺寸以匹配 tf.nn.crelu
输出。从这个意义上说,tf.nn.crelu
不能 与 tf.nn.relu
、tf.nn.elu
等
如果使用高级 API,情况会更简单,例如tensorflow slim。在这种情况下,图层函数负责匹配维度,因此您可以在 code 中轻松地将 tf.nn.relu
替换为 tf.nn.crelu
。但是,请记住,网络正在悄悄地变大一倍。
这是一个例子:
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.