小编use*_*757的帖子

theano hard_sigmoid()打破了梯度下降

对于突出显示问题的意图,请遵循本教程.


theano有3种计算张量sigmoid的方法,即sigmoid,ultra_fast_sigmoidhard_sidmoid.似乎使用后两者打破了梯度下降算法.

传统的sigmoid应该收敛,但其他sigmoid具有奇怪的不一致行为.ultra_fast_sigmoid,只是在尝试计算渐变'方法未定义('grad',ultra_fast_sigmoid)'时抛出一个直接错误,而hard_sigmoid编译得很好,但无法收敛解决方案.


有谁知道这种行为的来源?在文档中没有强调这应该发生,它似乎反直觉.


码:

import theano
import theano.tensor as T
import theano.tensor.nnet as nnet
import numpy as np

x = T.dvector()
y = T.dscalar()

def layer(x, w):
    b = np.array([1], dtype=theano.config.floatX)
    new_x = T.concatenate([x, b])
    m = T.dot(w.T, new_x) #theta1: 3x3 * x: 3x1 = 3x1 ;;; theta2: 1x4 * 4x1

    h = nnet.sigmoid(m) ## THIS SIGMOID RIGHT HERE

    return h

def grad_desc(cost, theta):
    alpha = 0.1 #learning rate
    return theta …
Run Code Online (Sandbox Code Playgroud)

python gradient-descent theano

5
推荐指数
1
解决办法
831
查看次数

Tensorflow:空的计算图和垃圾回收

1空图错误

嗨,我正在尝试完全分开运行多个张量流图,并遇到以下继承问题。

还可以

import tensorflow as tf


class A:

    g = tf.Graph()
    g.as_default()
    s = tf.Session(graph=g)

    x = tf.placeholder(tf.float32)

    __call__ = lambda self,X: self.s.run(self.y, {self.x:X})


class B(A):

    y = 2 * A.x


test = B()
print test([1,1,2])
Run Code Online (Sandbox Code Playgroud)

错误

RuntimeError: The Session graph is empty.  Add operations to the graph before calling run()
Run Code Online (Sandbox Code Playgroud)

2-垃圾收集

我也很好奇要删除这些不同的图,如果我使用Session()。close()关闭会话,并且这是唯一知道该图的会话,该图现在会消失并被垃圾回收吗?

tensorflow

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

如何正确分配cuda半精度数组?

half我对定义设备上的精确数据分配的正确方法感到困惑。例如,如果我希望有一个half设备内存数组,是否应该这样分配?

__device__ half array[32];
Run Code Online (Sandbox Code Playgroud)

或者这会与数组的实际设备内存使用量相同,float因为每个half数组之前都存储有未使用的位?(就像 abool必须占用整个内存地址,而不仅仅是 1 位)以下分配的正确方法是吗?

__device__ half2 array[16];
Run Code Online (Sandbox Code Playgroud)

如果两者分配的字节数相同,那么有什么意义呢half2

c++ memory precision cuda

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

标签 统计

c++ ×1

cuda ×1

gradient-descent ×1

memory ×1

precision ×1

python ×1

tensorflow ×1

theano ×1