gpt4 book ai didi

deep-learning - Tensorflow 不共享变量

转载 作者:行者123 更新时间:2023-12-03 00:39:44 25 4
gpt4 key购买 nike

我们修改了CIFAR-10 tutorial (卷积神经网络)在 Adience 数据库上运行,对面部进行性别分类。我们读here参数共享”是有用的,因为假设一个补丁特征是有用的,无论图像中的位置如何。除外:

Note that sometimes the parameter sharing assumption may not make sense. This is especially the case when the input images to a ConvNet have some specific centered structure, where we should expect, for example, that completely different features should be learned on one side of the image than another. One practical example is when the input are faces that have been centered in the image.

目标:因此我们希望关闭 CNN 的参数共享。

代码

我认为 CIFAR-10 教程使用了参数共享? def inference(images) 函数中的这部分代码似乎必须用它做一些事情:

biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
bias = tf.nn.bias_add(conv, biases)

哪个调用:

def _variable_on_cpu(name, shape, initializer):
with tf.device('/cpu:0'):
var = tf.get_variable(name, shape, initializer=initializer)
return var

问题

  • CIFAR-10 教程中确实存在参数共享吗?
  • 您能否告诉我们,我们是否正在寻找用于关闭参数共享的正确代码段,或者还需要寻找其他位置?
  • 欢迎任何其他帮助/建议,因为我们不知道从哪里开始。

最佳答案

CIFAR-10 model本教程在前两层( 'conv1''conv2' )中使用“参数共享”。使用 tf.nn.conv2d() 暗示了共享。运算符,它有效地从输入图像中提取补丁,并对每个补丁应用相同的过滤器(即共享参数)。

当你有一组卷积层时,“关闭”参数共享并不是一件容易的事:相反,你必须用不同类型的层替换它们。最简单的改变可能是用全连接层替换卷积层,例如通过使用 tf.nn.relu_layer()(如 'local3''local4' 层),它在内部执行矩阵乘法并为每个输入神经元维护单独的参数。

注意 对于视觉任务,全连接层通常会过度参数化,更合适的中间立场是使用 "local receptive field" ,它(非正式地)为每个输入维护单独的参数(如在完全连接的层中),但仅组合来自“附近”输入的值以产生输出(如在卷积中)。不幸的是,TensorFlow 尚未包含局部感受野的实现,但是adding support for them将是一个有用的项目。

关于deep-learning - Tensorflow 不共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com