[theano-users] Re: Logistic Regression for Semantic Segmentation

2017-02-13 Thread Jesse Livezey
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.


[theano-users] Re: Logistic Regression for Semantic Segmentation

2017-02-13 Thread Jesse Livezey
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.