我现在认真对待多年了。我需要一些帮助。
我正在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。
如果有人在这里帮助我,我真的很感激。
此致
答案 0 :(得分:1)
请找到pascal给出的这个问题的答案 https://groups.google.com/forum/#!topic/theano-users/cNnvw2rUHc8
失败是正确的,因为在调用函数时没有提供输入值,因为它是符号的。
答案是使用T.minimum(x,threshold)