name='decoder_network') decoder_p = decoder_network.apply(z) # Define the cost KL_term = -0.5 * (1 + encoder_lognu -T.exp(encoder_lognu) - encoder_mu ** 2).sum(axis=1) reconstruction_term = (x * T.log(decoder_p) + (1 - x) * T.log(1 - decoder_p)).sum(axis=1) cost = (KL_term -reconstruction_term).mean() cost.name = 'negative_log_likelihood' # Initialize the parameters encoder_network._push_initialization_config() for layer in encoder_network.linear_transformations: layer.weights_init = Uniform( width=12. / (layer.input_dim + layer.output_dim)) encoder_network.initialize() decoder_network._push_initialization_config() for layer in decoder_network.linear_transformations: layer.weights_init = Uniform( width=12. / (layer.input_dim + layer.output_dim)) decoder_network.initialize() mnist = BinarizedMNIST(("train",), sources=('features',)) train_data_stream = Flatten(DataStream.default_stream(
decoder_p = decoder_network3.apply(T.concatenate([h1_decode, h2_decode], axis=1)) # Define the cost KL_term = -0.5 * ((1 + z1_lognu -T.exp(z1_lognu) - z1_mu ** 2).sum(axis=1) + (1 + z2_lognu -T.exp(z2_lognu) - z2_mu ** 2).sum(axis=1)) reconstruction_term = (x * T.log(decoder_p) + (1 - x) * T.log(1 - decoder_p)).sum(axis=1) cost = (KL_term -reconstruction_term).mean() cost.name = 'negative_log_likelihood' # Initialize the parameters encoder_network1._push_initialization_config() for layer in encoder_network1.linear_transformations: layer.weights_init = Uniform( width=12. / (layer.input_dim + layer.output_dim)) encoder_network1.initialize() encoder_network2._push_initialization_config() for layer in encoder_network2.linear_transformations: layer.weights_init = Uniform( width=12. / (layer.input_dim + layer.output_dim)) encoder_network2.initialize() encoder_network3._push_initialization_config() for layer in encoder_network3.linear_transformations: layer.weights_init = Uniform( width=12. / (layer.input_dim + layer.output_dim))
#y_hat = #reconstruct1 = BinaryCrossEntropy().apply(x, mlp1.apply(x)) reconstruct2 = SquaredError().apply(y, y_hat) regularizer = 0 #for mlp in [mlp1, mlp2, mlp3, mlp4]: for child in mlp1.children: for param in child.parameters: regularizer = regularizer + (param ** 2).sum() cost = reconstruct1 + 0.1*regularizer cost.name = 'reconstruct_error' #------------------------------------------------------------------ #for mlp in [mlp1, mlp2, mlp3, mlp4]: mlp1._push_initialization_config() for layer in mlp1.linear_transformations: layer.weights_init = Uniform(width=12. / (layer.input_dim + layer.output_dim)) mlp1.initialize() mnist = BinarizedMNIST(("train",), sources=('features',)) train_data_stream = Flatten(DataStream.default_stream( mnist, iteration_scheme=SequentialScheme(mnist.num_examples, batch_size=batch_size))) monitor_data_stream = Flatten(DataStream.default_stream( mnist, iteration_scheme=SequentialScheme(mnist.num_examples, batch_size=batch_size))) cg = ComputationGraph(cost)