def build_net(in_shape, out_size, model):
# input variables
input_var = (tt.tensor3('input', dtype='float32')
if len(in_shape) > 1 else
tt.matrix('input', dtype='float32'))
target_var = tt.matrix('target_output', dtype='float32')
# stack more layers
network = lnn.layers.InputLayer(
name='input', shape=(None,) + in_shape, input_var=input_var)
if 'conv' in model and model['conv']:
# reshape to 1 "color" channel
network = lnn.layers.reshape(
network, shape=(-1, 1) + in_shape, name='reshape')
for c in sorted(model['conv'].keys()):
network = blocks.conv(network, **model['conv'][c])
# no more output layer if gap is already there!
if 'gap' in model and model['gap']:
network = blocks.gap(network, out_size=out_size,
out_nonlinearity=model['out_nonlinearity'],
**model['gap'])
else:
if 'dense' in model and model['dense']:
network = blocks.dense(network, **model['dense'])
# output layer
out_nl = getattr(lnn.nonlinearities, model['out_nonlinearity'])
network = lnn.layers.DenseLayer(
network, name='output', num_units=out_size,
nonlinearity=out_nl)
return network, input_var, target_var
评论列表
文章目录