The first line should probably be
logits = x.dot(w) + b.dimshuffle('x', 0')
On Monday, February 13, 2017 at 3:05:34 PM UTC-8, Jesse Livezey wrote:
>
> You haven't used w or b in the graph to compute the cost function. You
> need to add something like
>
> logits = w.dot(x) + b.dimshuffle('x', 0')
> logitsdev = logits - logits.max(1, keepdims=True)
>
> you probably also want b to be of length 257 rather than a scalar.
>
> On Monday, February 13, 2017 at 9:06:57 AM UTC-8, Dimitris Marm wrote:
>>
>>
>> Hello,
>>
>> I am new to Theano and I have seen that actually is not straight-forward
>> how to apply semantic segmentation over multiclass and multilabel labels.
>>
>> Particularly the problem I seen many people face is regarding the
>> logistic-regression layer in the end of the network. For tackling this
>> problem I constructed a single
>>
>> *logistic-regression layer for 2d labels.*I guess my code still has some
>> bug but I am unable to find it !
>>
>>
>> The code
>>
>> =
>>
>> import numpy as np
>> import random
>> from theano import shared
>> from theano import tensor as T
>> import theano
>>
>> #import pdb; pdb.set_trace()
>>
>> theano.config.optimizer='fast_compile'
>> theano.config.exception_verbosity='high'
>> theano.config.compute_test_value = 'warn'
>>
>> features = []
>> labels = []
>>
>>
>> # === theano =
>>
>> for i in range(10):
>>
>> if i == 0:
>>
>> features = np.array([random.randint(0,256) for t in range(0,128*
>> 128)]).reshape((1, 1, 128,128))
>> labels = np.array([random.randint(0,256) for t in range(0,128*128
>> )]).reshape((1, 1, 128,128))
>>
>> else:
>>
>> features= np.append(features, np.array([random.randint(0,256) for
>> t in range(0,128*128)]).reshape((1, 1, 128,128)),axis= 0)
>>
>> labels= np.append(features, np.array([random.randint(0,256) for
>> t in range(0,128*128)]).reshape((1, 1, 128,128)),axis= 0)
>>
>> # Loss
>>
>> def train_lr(x_train, y_train, regu_coeff = 0.00015, step = 0.001):
>>
>> x = T.matrix("x")
>> y = T.matrix("y")
>>
>> w = theano.shared(
>> value = np.random.randn(128*128,257),
>> name='w',
>> borrow=True
>> )
>>
>> b = theano.shared(0., name='b')
>>
>> # 2d-softmax implementation
>> xdev = x - x.max(1, keepdims=True)
>> log_pred = xdev - T.log(T.sum(T.exp(xdev), axis=1, keepdims=True))
>>
>> cost = T.mean(-T.sum(y * log_pred, axis=1)) # cross entropy
>>
>> gw, gb = T.grad(cost, [w, b]) # gradient
>>
>> train = theano.function(
>> inputs=[x,y],
>> outputs=[log_pred],
>> updates=((w, w - step * gw), (b, b - step * gb)))
>>
>> for i in range(100):
>> train(x_train,y_train)
>>
>> return w, b
>>
>> pp = train_lr(features, labels)
>>
>>
>>
>> The error I am getting
>>
>> ===
>>
>>
>>
>>
>>
>>
>>
>> *theano.gradient.DisconnectedInputError: grad method was asked to compute
>> the gradient with respect to a variable that is not part of the
>> computational graph of the cost, or is used only by a non-differentiable
>> operator: w~*I really do not know how to proceed as I don't
>> understand why the w (weights) are not differentiable.
>>
>> I would appreciate any hints
>>
>> Regards
>>
>
--
---
You received this message because you are subscribed to the Google Groups
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to theano-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.