Imports


In [1]:
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

# Local
import Neuron
import models as models
import train as train
import batch_utils
import data_transforms
import generate_training_data


Using Theano backend.

Data


In [2]:
training_data = generate_training_data.y_shape(n_nodes=20, 
                                               data_size=1000, 
                                               first_length=10, 
                                               branching_node=6)

Global parameters


In [3]:
n_nodes = 20
input_dim = 100
n_epochs = 5
batch_size = 32
n_batch_per_epoch = np.floor(training_data['morphology']['n20'].shape[0]/batch_size).astype(int)
d_iters = 20
lr_discriminator =  0.001
lr_generator = 0.001
train_loss = 'binary_crossentropy'
#train_loss = 'wasserstein_loss'

rule = 'none'
d_weight_constraint = [-.03, .03]
g_weight_constraint = [-33.3, 33.3]
m_weight_constraint = [-33.3, 33.3]

Run


In [ ]:
geom_model, morph_model, disc_model, gan_model = \
    train.train_model(training_data=training_data,
                      n_nodes=n_nodes,
                      input_dim=input_dim,
                      n_epochs=n_epochs,
                      batch_size=batch_size,
                      n_batch_per_epoch=n_batch_per_epoch,
                      d_iters=d_iters,
                      lr_discriminator=lr_discriminator,
                      lr_generator=lr_generator,
                      d_weight_constraint=d_weight_constraint,
                      g_weight_constraint=g_weight_constraint,
                      m_weight_constraint=m_weight_constraint,
                      rule=rule,
                      train_loss=train_loss,
                      verbose=True)


____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_1 (InputLayer)             (None, 19, 3)         0                                            
____________________________________________________________________________________________________
input_2 (InputLayer)             (None, 19, 20)        0                                            
____________________________________________________________________________________________________
merge_1 (Merge)                  (None, 19, 23)        0           input_1[0][0]                    
                                                                   input_2[0][0]                    
____________________________________________________________________________________________________
lambda_1 (Lambda)                (None, 20, 103)       0           merge_1[0][0]                    
____________________________________________________________________________________________________
reshape_1 (Reshape)              (None, 1, 2060)       0           lambda_1[0][0]                   
____________________________________________________________________________________________________
dense_1 (Dense)                  (None, 1, 200)        412200      reshape_1[0][0]                  
____________________________________________________________________________________________________
dense_2 (Dense)                  (None, 1, 50)         10050       dense_1[0][0]                    
____________________________________________________________________________________________________
dense_3 (Dense)                  (None, 1, 10)         510         dense_2[0][0]                    
____________________________________________________________________________________________________
dense_4 (Dense)                  (None, 1, 1)          11          dense_3[0][0]                    
====================================================================================================
Total params: 422,771
Trainable params: 422,771
Non-trainable params: 0
____________________________________________________________________________________________________
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
noise_input (InputLayer)         (None, 1, 100)        0                                            
____________________________________________________________________________________________________
dense_5 (Dense)                  (None, 1, 100)        10100       noise_input[0][0]                
____________________________________________________________________________________________________
dense_6 (Dense)                  (None, 1, 100)        10100       dense_5[0][0]                    
____________________________________________________________________________________________________
dense_7 (Dense)                  (None, 1, 50)         5050        dense_6[0][0]                    
____________________________________________________________________________________________________
dense_8 (Dense)                  (None, 1, 57)         2907        dense_7[0][0]                    
____________________________________________________________________________________________________
reshape_2 (Reshape)              (None, 19, 3)         0           dense_8[0][0]                    
====================================================================================================
Total params: 28,157
Trainable params: 28,157
Non-trainable params: 0
____________________________________________________________________________________________________
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
noise_input (InputLayer)         (None, 1, 100)        0                                            
____________________________________________________________________________________________________
dense_9 (Dense)                  (None, 1, 100)        10100       noise_input[0][0]                
____________________________________________________________________________________________________
dense_10 (Dense)                 (None, 1, 100)        10100       dense_9[0][0]                    
____________________________________________________________________________________________________
dense_11 (Dense)                 (None, 1, 380)        38380       dense_10[0][0]                   
____________________________________________________________________________________________________
reshape_3 (Reshape)              (None, 19, 20)        0           dense_11[0][0]                   
____________________________________________________________________________________________________
lambda_2 (Lambda)                (None, 19, 20)        0           reshape_3[0][0]                  
====================================================================================================
Total params: 58,580
Trainable params: 58,580
Non-trainable params: 0
____________________________________________________________________________________________________

====================

Epoch #0

    After 20 iterations
        Discriminator Loss                     = 0.00807452294976
/Users/RoozbehFarhoudi/anaconda/lib/python2.7/site-packages/scipy/sparse/compressed.py:730: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
  SparseEfficiencyWarning)
/Users/RoozbehFarhoudi/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == str('face'):
    Generator_Loss: 5.70124530792
2
     Level #1 Epoch #0 Batch #2
    After 20 iterations
        Discriminator Loss                     = 0.00143412977923

    Generator_Loss: 4.91282367706
3
    After 20 iterations
        Discriminator Loss                     = 0.00945728365332

    Generator_Loss: 4.78291940689
4
     Level #1 Epoch #0 Batch #4
    After 20 iterations
        Discriminator Loss                     = 0.02277251333

    Generator_Loss: 5.5450387001
5
    After 20 iterations
        Discriminator Loss                     = 0.0488845147192

    Generator_Loss: 4.83889436722
6
     Level #1 Epoch #0 Batch #6
    After 20 iterations
        Discriminator Loss                     = 0.0512690842152

    Generator_Loss: 5.34667921066
7
    After 20 iterations
        Discriminator Loss                     = 0.0972553342581

    Generator_Loss: 4.7447218895
8
     Level #1 Epoch #0 Batch #8
    After 20 iterations
        Discriminator Loss                     = 0.134872838855

    Generator_Loss: 4.67358398438
9
    After 20 iterations
        Discriminator Loss                     = 0.0792549848557

    Generator_Loss: 5.67799282074
10
     Level #1 Epoch #0 Batch #10
    After 20 iterations
        Discriminator Loss                     = 0.25604647398

    Generator_Loss: 4.47344589233
11
    After 20 iterations
        Discriminator Loss                     = 0.263368070126

    Generator_Loss: 3.95538592339
12
     Level #1 Epoch #0 Batch #12
    After 20 iterations
        Discriminator Loss                     = 0.232000499964

    Generator_Loss: 3.91139340401
13
    After 20 iterations
        Discriminator Loss                     = 0.218763798475

    Generator_Loss: 3.96560311317
14
     Level #1 Epoch #0 Batch #14
    After 20 iterations
        Discriminator Loss                     = 0.332368701696

    Generator_Loss: 3.86862039566
15
    After 20 iterations
        Discriminator Loss                     = 0.116200193763

    Generator_Loss: 4.96887254715
16
     Level #1 Epoch #0 Batch #16
    After 20 iterations
        Discriminator Loss                     = 0.103621609509

    Generator_Loss: 4.03945922852
17
    After 20 iterations
        Discriminator Loss                     = 0.321866571903

    Generator_Loss: 3.98370480537
18
     Level #1 Epoch #0 Batch #18
    After 20 iterations
        Discriminator Loss                     = 0.32833302021

    Generator_Loss: 2.75163030624
19
    After 20 iterations
        Discriminator Loss                     = 0.369408994913

    Generator_Loss: 1.9836575985
20
     Level #1 Epoch #0 Batch #20
    After 20 iterations
        Discriminator Loss                     = 0.407361626625

    Generator_Loss: 2.29274272919
21
    After 20 iterations
        Discriminator Loss                     = 0.299211382866

In [ ]: