In [1]:
from theano import tensor
x = tensor.matrix('features')
In [2]:
from blocks.bricks import Linear, Rectifier, Softmax
input_to_hidden = Linear(name='input_to_hidden', input_dim=784, output_dim=100)
h = Rectifier().apply(input_to_hidden.apply(x))
hidden_to_output = Linear(name='hidden_to_output', input_dim=100, output_dim=10)
y_hat = Softmax().apply(hidden_to_output.apply(h))
In [3]:
y = tensor.lmatrix('targets')
from blocks.bricks.cost import CategoricalCrossEntropy
cost = CategoricalCrossEntropy().apply(y.flatten(), y_hat)
In [4]:
from blocks.bricks import WEIGHT
from blocks.graph import ComputationGraph
from blocks.filter import VariableFilter
cg = ComputationGraph(cost)
W1, W2 = VariableFilter(roles=[WEIGHT])(cg.variables)
cost = cost + 0.005 * (W1 ** 2).sum() + 0.005 * (W2 ** 2).sum()
cost.name = 'cost_with_regularization'
In [5]:
from blocks.bricks import MLP
mlp = MLP(activations=[Rectifier(), Softmax()], dims=[784, 100, 10]).apply(x)
In [6]:
from blocks.initialization import IsotropicGaussian, Constant
input_to_hidden.weights_init = hidden_to_output.weights_init = IsotropicGaussian(0.01)
input_to_hidden.biases_init = hidden_to_output.biases_init = Constant(0)
input_to_hidden.initialize()
hidden_to_output.initialize()
In [7]:
from pprint import PrettyPrinter
pp = PrettyPrinter(depth=6)
In [8]:
pp.pprint(input_to_hidden.__dict__)
In [9]:
pp.pprint(input_to_hidden.weights_init.__dict__)
pp.pprint(input_to_hidden.biases_init.__dict__)
pp.pprint(hidden_to_output.weights_init.__dict__)
pp.pprint(hidden_to_output.biases_init.__dict__)
In [10]:
W1.get_value()
Out[10]:
In [12]:
from fuel.datasets import MNIST
mnist = MNIST("train")
In [15]:
from fuel.streams import DataStream
from fuel.schemes import SequentialScheme
from fuel.transformers import Flatten
data_stream = Flatten(DataStream.default_stream(
mnist,
iteration_scheme=SequentialScheme(mnist.num_examples, batch_size=256)))
In [16]:
from blocks.algorithms import GradientDescent, Scale
algorithm = GradientDescent(cost=cost, params=cg.parameters,
step_rule=Scale(learning_rate=0.1))
In [17]:
mnist_test = MNIST("test")
data_stream_test = Flatten(DataStream.default_stream(
mnist_test,
iteration_scheme=SequentialScheme(
mnist_test.num_examples, batch_size=1024)))
In [18]:
from blocks.extensions.monitoring import DataStreamMonitoring
monitor = DataStreamMonitoring(
variables=[cost], data_stream=data_stream_test, prefix="test")
In [19]:
from blocks.main_loop import MainLoop
from blocks.extensions import FinishAfter, Printing
main_loop = MainLoop(data_stream=data_stream, algorithm=algorithm,
extensions=[monitor, FinishAfter(after_n_epochs=2), Printing()])
main_loop.run()
In [23]:
import theano
from theano import tensor
from blocks.bricks import Tanh
x = tensor.vector('x')
y = Tanh().apply(x)
print y
print isinstance(y, theano.Variable)
In [24]:
from blocks.bricks import Linear
from blocks.initialization import IsotropicGaussian, Constant
linear = Linear(input_dim=10, output_dim=5,
weights_init=IsotropicGaussian(),
biases_init=Constant(0.01))
y = linear.apply(x)
In [26]:
print linear.params
print linear.params[1].get_value()
In [28]:
print linear.initialize()
print linear.params[1].get_value()
In [29]:
z = tensor.max(y + 4)
In [32]:
linear2 = Linear(output_dim=10)
print linear2.input_dim
In [33]:
linear2.input_dim = linear.output_dim
linear2.apply(x)
Out[33]:
In [35]:
linear3 = Linear(input_dim=10, output_dim=5)
print linear3.params
In [36]:
print linear3.allocate()
print linear3.params
In [37]:
from blocks.bricks import MLP, Logistic
mlp = MLP(activations=[Logistic(name='sigmoid_0'),
Logistic(name='sigmoid_1')], dims=[16, 8, 4],
weights_init=IsotropicGaussian(), biases_init=Constant(0.01))
In [38]:
[child.name for child in mlp.children]
Out[38]:
In [39]:
y = mlp.apply(x)
print mlp.children[0].input_dim
In [41]:
mlp.initialize()
mlp.children[0].params[0].get_value()
Out[41]:
In [45]:
mlp = MLP(activations=[Logistic(name='sigmoid_0'),
Logistic(name='sigmoid_1')], dims=[16, 8, 4],
weights_init=IsotropicGaussian(), biases_init=Constant(0.01))
y = mlp.apply(x)
mlp.push_initialization_config()
mlp.children[0].weights_init = Constant(0.01)
In [46]:
mlp.initialize()
print mlp.children[0].params[0].get_value()
In [47]:
import theano
a = theano.shared(3.)
a.name = 'a'
x = theano.tensor.scalar('data')
cost = abs(x ** 2 - x ** a)
cost.name = 'cost'
In [48]:
import numpy
from fuel.streams import DataStream
from fuel.datasets import IterableDataset
data_stream = DataStream(IterableDataset(
numpy.random.rand(150).astype(theano.config.floatX)))
In [49]:
from blocks.main_loop import MainLoop
from blocks.algorithms import GradientDescent, Scale
from blocks.extensions import FinishAfter
from blocks.extensions.monitoring import TrainingDataMonitoring
from blocks.extras.extensions.plot import Plot
main_loop = MainLoop(
model=None, data_stream=data_stream,
algorithm=GradientDescent(cost=cost,
params=[a],
step_rule=Scale(learning_rate=0.1)),
extensions=[FinishAfter(after_n_epochs=1),
TrainingDataMonitoring([cost, a], after_batch=True),
Plot('Plotting example', channels=[['cost'], ['a']],
after_batch=True)])
main_loop.run()
In [ ]: