对于突出显示问题的意图,请遵循本教程.
theano有3种计算张量sigmoid的方法,即sigmoid,ultra_fast_sigmoid和hard_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) 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()关闭会话,并且这是唯一知道该图的会话,该图现在会消失并被垃圾回收吗?
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?