Guest User

Untitled

a guest
Oct 23rd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. from keras.layers import BatchNormalization, Dense, Activation
  2. from keras.layers import Reshape, Concatenate, Input, Add, Lambda, Multiply
  3. from keras.models import Model, Sequential
  4. import tensorflow as tf
  5. from tqdm import trange
  6. from keras.layers import dot, concatenate
  7. import keras.backend as k
  8.  
  9.  
  10. class MDNN2:
  11. def __init__(self, channels, nfeatures, sizes, activation='tanh'):
  12. self.nfeatures = nfeatures
  13. self.atommodels = {}
  14. for c in channels:
  15. model = Sequential()
  16. model.add(Dense(units=sizes[0], input_dim=nfeatures, name='{}_dense_0'.format(c)))
  17. model.add(Activation(activation, name='{}_activation_0'.format(c)))
  18. for i, s in enumerate(sizes[1:-1]):
  19. model.add(Dense(units=s, name='{}_dense_{}'.format(c, i+1)))
  20. model.add(Activation(activation, name='{}_activation_{}'.format(c, i+1)))
  21. model.add(Dense(units=1, name='{}_dense_{}'.format(c, len(sizes)-1)))
  22. model.add(Activation('linear', name='{}_activation_{}'.format(c, len(sizes)-1)))
  23. self.atommodels[c] = model
  24.  
  25.  
  26. def create_model_features(self, atomelements):
  27.  
  28. outputs = []
  29. in_layer = Input(shape=(len(atomelements), self.nfeatures))
  30.  
  31. unpack_layer = Lambda(lambda x: tf.unstack(x, axis=1))
  32. unpack_out = unpack_layer(in_layer)
  33.  
  34. for i, atomin in enumerate(unpack_out):
  35. if atomelements[i] not in self.atommodels:
  36. print('Element {} not found in layers'.format(atomelements[i]))
  37. raise
  38.  
  39. output = self.atommodels[atomelements[i]](atomin)
  40. outputs.append(output)
  41.  
  42. final_out = concatenate(outputs, 'concat')
  43.  
  44. return Model(in_layer, final_out)
Add Comment
Please, Sign In to add comment