예제 #1
0
                      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(
예제 #2
0
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))
예제 #3
0
#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)