小编Pet*_*ter的帖子

在NumPy阵列的每个单元处有效地评估函数

给定NumPy数组A,将相同函数f应用于每个单元格的最快/最有效的方法是什么?

  1. 假设我们将分配给A(I,J)F(A(I,J)) .

  2. 函数f没有二进制输出,因此掩码(ing)操作无济于事.

"明显的"双循环迭代(通过每个单元格)是最优解吗?

python performance numpy function vectorization

123
推荐指数
2
解决办法
11万
查看次数

TensorFlow中的引导反向传播

我想在TensorFlow实现在此引入"引导反向传播"的技术论文和其在此描述的配方.

计算上意味着当我计算梯度时,例如输入wrt.NN的输出,我将不得不修改每个RELU单元计算的梯度.具体地说,这些单元上的反向传播信号必须在零上设置阈值,以使该技术起作用.换句话说,必须忽略RELU的负面偏导数.

鉴于我只对测试示例应用这些梯度计算感兴趣,即我不想更新模型的参数 - 我该怎么做?

到目前为止,我尝试过两件事(不成功):

  1. 使用tf.py_func包装我的简单numpy版本的RELU,然后有资格通过g.gradient_override_map上下文管理器重新定义它的渐变操作.

  2. 收集BackProp的前向/后向值并对源自Relus的那些值应用阈值.

我用两种方法都失败了,因为他们需要一些目前我没有的TF内部知识.

任何人都可以建议任何其他路线,或草拟代码?

非常感谢.

backpropagation tensorflow

8
推荐指数
2
解决办法
9375
查看次数

通过神经网络分类器计算图像显着性

假设我们有一个经过训练的卷积神经网络,可以在Tensor-Flow中对图像进行分类(wlog灰度)。

给定经过训练的网络和测试图像,人们可以追踪其中的哪些像素是显着的,或者“等效地”追踪哪些像素最负责图像的输出分类。在Theano一个漂亮的解释和实施细则,在此给出的文章

假设对于与输入图像直接链接的第一层卷积,我们确实具有每个卷积核的参数梯度。分类功能。

如何将梯度传播回输入层,以便计算图像的每个像素的偏导数?

  1. 传播并累积回梯度,将为我们提供显着的像素(它们是幅值较大的像素)。

  2. 找到梯度wrt。到目前为止,我做了第一层的内核:

    1. 将通常的损失算子替换为输出层算子。
    2. 使用了“ compute_gradient”功能,

总而言之,它看起来像:

  • opt = tf.train.GradientDescentOptimizer(1)
  • 等级= opt.compute_gradients(输出)
  • grad_var = [(grad 1代表grads等级)
  • g1 = sess.run([grad_var [0]])

其中,“输出”是NN的输出层的最大值。g1是一个(k,k,1,M)张量,因为我在第一层使用了M:kxk卷积核。

现在,我需要找到在每个输入像素上传播g1的正确方法,以计算其导数wrt。输出。

gradient classification tensorflow

4
推荐指数
1
解决办法
1009
查看次数