我现在很认真地坚持了很多年。我需要一些帮助。
我在 GPU 上运行一个 theano conv 网络。网络具有这样的损失函数
def mse(x, t): 返回 T.mean((x - t) ** 2)
这里x是整流线性单元的预测值,t是期望值。
现在,对于一个特定的学习问题,我正在尝试修改函数,以便我想对 x 的值设定阈值。所以本质上是这样简单的
x[x>ts] = ts
但我真的很挣扎。我尝试了很多东西
ts = 0.91
Y = T.vector()
#x_update = (x, T.set_subtensor(x[(x > ts).eval()], Y))
#f = function([Y], updates=[x_update])
#v=np.empty(len((x > ts).eval()))
#v.fill(ts)
#f(v)
#x.shape.eval()
x_arr = x.flatten()
print type(x_arr)
print type(t)
print type(x)
#print T.shape(x_arr).eval()
#print x.shape.eval()
#print x_arr.shape.eval()
#print t.shape.eval()
#print x.eval()
#print x_arr.get_value()
#x_newarr = x_arr.eval()
#x_newarr[x_newarr>ts] = ts
#x = T.shared(x_newarr)
return T.mean((x - t) ** 2)
除了三个打印件,所有打印件<class 'theano.tensor.var.TensorVariable' >
都给我错误。所以我对如何做这个简单的事情束手无策。是因为这些东西在 GPU 上吗?
我确实在本地 python 提示符下测试了代码,方法是构造一个 numpy 数组并将其转换为张量共享变量。上面不同的东西有效。但我意识到类型是 theano.tensor.sharedvar.TensorSharedVariable 而不是 theano.tensor.var.TensorVariable。
如果有人在这里帮我一把,我将不胜感激。
问候