Just to be sure, "inpput_var" instead of "input_var" is a typo in the
e-mail only, not in the source code itself, right?
On Tue, Aug 16, 2016, Steve Leach wrote:
>
> It's a tale of two nets, one that works fine and one that suddenly fails
> mysteriously.
> Here's the bit that's still working:
> #---------------------------------------------
>
>
> X,Y = sets.mnist32(); idx = np.arange(X.shape[0]);np.random.shuffle(idx)
>
> def plot(x):
> plt.imshow(x.reshape((32,32)),cmap='Greys_r');plt.show()
>
> class Mask(Layer):
> ''' A layer which applies a nearly-bianarized multiplicative mask, w,
> with a nonzero bias, b, to its input.
> The absolute values of weights are raised to the power p before
> bounding by the hyperbolic tangent function,
> and before the addition of bais.'''
>
> def __init__(self, incoming, b=.01, p=4, initial=.15, **kwargs):
> super(Mask, self).__init__(incoming, **kwargs)
> num_inputs = self.input_shape[1]
> self.b = b; self.p = p
> W = np.ones((num_inputs,)).astype(floatX)*initial
> W = shared(W)
> self.W = self.add_param(W,(num_inputs,), name = 'W_Mask')
>
> def get_output_for(self,input,**kwargs):
> return((tanh((abs(self.W)**self.p) )+self.b)*input)
>
> # Large Net.
>
> x = T.matrix('x')
> In = InputLayer((None,X.shape[1]),input_var=x)
> Noise = GaussianNoiseLayer(In)
> Layer_1 = DenseLayer(Noise,num_units=(X.shape[1]),nonlinearity=tanh)
> LM = Mask(Layer_1)
> Layer_2 = DenseLayer(LM,num_units=X.shape[1],nonlinearity=sigmoid)
> Out = get_output(Layer_2)
>
> params = get_all_params(Layer_2)
> cost = ((x-Out)**2).sum()+ \
> .001* (regularize_layer_params(LM,l1))+ \
> .01* (regularize_layer_params(Layer_2,l2))+
> (regularize_layer_params(Layer_1,l2))
>
> Updates = sgd(cost,params,learning_rate=.001)
>
> train = function([x],[cost, Out], updates=Updates)
>
> import tqdm
> bar = tqdm.tqdm
> batchsize = 500
> batches = len(idx) // batchsize
> epochs = 10
>
> E = []
>
> while epochs:
> np.random.shuffle(idx)
> for b in bar(range(batches)):
> XX = X[idx[b*batchsize:(b+1)*batchsize]]
> E.append(train(XX)[0])
>
> #And here's where things go off the rails:
> #---------------------------------------------------------------------------
>
> #Extract small net
>
> before = [Layer_1.W.get_value(),Layer_1.b.get_value()]
> after = Layer_2.W.get_value()
>
> m = LM.W.get_value()
> active = []
>
> for i,n in enumerate(range(len(m))):
> if m[n] > .5:
> active.append(i)
>
> before = [before[0][:,active],before[1][active]]
> after = after[active,:]
>
> x = T.matrix('x')
>
> In_2 = InputLayer((None,X.shape[1]), inpput_var=x)
> Noise2 = GaussianNoiseLayer(In_2)
> Layer_1_2 = DenseLayer(Noise2,num_units=171,nonlinearity=tanh)
> Layer_1_2.W.set_value(before[0])
> Layer_1_2.b.set_value(before[1])
> Layer_2_2 = DenseLayer(Layer_1_2,num_units=1024,nonlinearity=sigmoid)
> Layer_2_2.W.set_value(after)
> #Layer_22.b.set_value(after[1])
> Out_2 = get_output(Layer_2_2)
>
> params_2 = get_all_params(Layer_2_2)
>
> cost_2 = ((x-Out_2)**2).sum()+.01* (regularize_layer_params(Layer_2_2,l2))+
> (regularize_layer_params(Layer_1_2,l2))
>
> Updates_2 = sgd(cost_2,params_2,learning_rate=.001)
>
> train_2 = function([x],[cost_2, Out_2], updates=Updates_2)
>
> plot(X[0]);plt.show()
> #plot(Out2.eval({x2:XX[:1]}));plt.show()
>
> #And the error:
> #------------------------------------------------------------------------------------------
>
> ---------------------------------------------------------------------------MissingInputError
> Traceback (most recent call
> last)<ipython-input-7-2d5d42706ca7> in <module>() 32 Updates_2 =
> sgd(cost_2,params_2,learning_rate=.001) 33 ---> 34 train_2 =
> function([x],[cost_2, Out_2], updates=Updates_2) 35 36
> plot(X[0]);plt.show()
> /usr/local/lib/python3.4/dist-packages/theano/compile/function.py in
> function(inputs, outputs, mode, updates, givens, no_default_updates,
> accept_inplace, name, rebuild_strict, allow_input_downcast, profile,
> on_unused_input) 320 on_unused_input=on_unused_input,
> 321 profile=profile,--> 322
> output_keys=output_keys) 323 # We need to add the flag check_aliased
> inputs if we have any mutable or 324 # borrowed used defined inputs
> /usr/local/lib/python3.4/dist-packages/theano/compile/pfunc.py in
> pfunc(params, outputs, mode, updates, givens, no_default_updates,
> accept_inplace, name, rebuild_strict, allow_input_downcast, profile,
> on_unused_input, output_keys) 478
> accept_inplace=accept_inplace, name=name, 479
> profile=profile, on_unused_input=on_unused_input,--> 480
> output_keys=output_keys) 481 482
> /usr/local/lib/python3.4/dist-packages/theano/compile/function_module.py in
> orig_function(inputs, outputs, mode, accept_inplace, name, profile,
> on_unused_input, output_keys) 1781 profile=profile,
> 1782 on_unused_input=on_unused_input,-> 1783
> output_keys=output_keys).create( 1784 defaults) 1785
> /usr/local/lib/python3.4/dist-packages/theano/compile/function_module.py in
> __init__(self, inputs, outputs, mode, accept_inplace, function_builder,
> profile, on_unused_input, fgraph, output_keys) 1433 # OUTPUT
> VARIABLES) 1434 fgraph, additional_outputs = std_fgraph(inputs,
> outputs,-> 1435
> accept_inplace) 1436 fgraph.profile = profile 1437
> else:
> /usr/local/lib/python3.4/dist-packages/theano/compile/function_module.py in
> std_fgraph(input_specs, output_specs, accept_inplace) 174 175
> fgraph = gof.fg.FunctionGraph(orig_inputs, orig_outputs,--> 176
> update_mapping=update_mapping) 177 178 for
> node in fgraph.apply_nodes:
> /usr/local/lib/python3.4/dist-packages/theano/gof/fg.py in __init__(self,
> inputs, outputs, features, clone, update_mapping) 179 180 for
> output in outputs:--> 181 self.__import_r__(output,
> reason="init") 182 for i, output in enumerate(outputs): 183
> output.clients.append(('output', i))
> /usr/local/lib/python3.4/dist-packages/theano/gof/fg.py in __import_r__(self,
> variable, reason) 374 # Imports the owners of the variables 375
> if variable.owner and variable.owner not in self.apply_nodes:--> 376
> self.__import__(variable.owner, reason=reason) 377
> if (variable.owner is None and 378 not
> isinstance(variable, graph.Constant) and
> /usr/local/lib/python3.4/dist-packages/theano/gof/fg.py in __import__(self,
> apply_node, check, reason) 416 "for more
> information on this error." 417 %
> str(node)),--> 418 variable=r) 419 420
> for node in new_nodes:
> MissingInputError: An input of the graph, used to compute Shape(input), was
> not provided and not given a value.Use the Theano flag
> exception_verbosity='high',for more information on this error.
>
> Backtrace when the variable is created:
> File "/usr/local/lib/python3.4/dist-packages/ipykernel/kernelbase.py", line
> 228, in dispatch_shell
> handler(stream, idents, msg)
> File "/usr/local/lib/python3.4/dist-packages/ipykernel/kernelbase.py", line
> 391, in execute_request
> user_expressions, allow_stdin)
> File "/usr/local/lib/python3.4/dist-packages/ipykernel/ipkernel.py", line
> 199, in do_execute
> shell.run_cell(code, store_history=store_history, silent=silent)
> File
> "/usr/local/lib/python3.4/dist-packages/IPython/core/interactiveshell.py",
> line 2705, in run_cell
> interactivity=interactivity, compiler=compiler, result=result)
> File
> "/usr/local/lib/python3.4/dist-packages/IPython/core/interactiveshell.py",
> line 2809, in run_ast_nodes
> if self.run_code(code, result):
> File
> "/usr/local/lib/python3.4/dist-packages/IPython/core/interactiveshell.py",
> line 2869, in run_code
> exec(code_obj, self.user_global_ns, self.user_ns)
> File "<ipython-input-7-2d5d42706ca7>", line 18, in <module>
> In_2 = InputLayer((None,X.shape[1]), inpput_var=x)
> File "/usr/local/lib/python3.4/dist-packages/lasagne/layers/input.py", line
> 63, in __init__
> input_var = input_var_type(var_name)
>
>
> --
>
> ---
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
--
Pascal
--
---
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 [email protected].
For more options, visit https://groups.google.com/d/optout.