Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. seq = concat(embeddings)
  2. cshape = (config.doc_size, sum(f.output_dim for f in features))
  3. seq = Reshape((1,)+cshape)(seq)
  4.  
  5.  
  6. convLayers = []
  7. for filter_size, filter_num in zip(config.filter_sizes, config.filter_nums):
  8. seq2 = Convolution2D(
  9. filter_num,
  10. filter_size,
  11. cshape[1],
  12. border_mode='valid',
  13. activation='relu',
  14. dim_ordering='th'
  15. )(seq)
  16. seq2 = MaxPooling2D(
  17. pool_size=(config.doc_size-filter_size+1, 1),
  18. dim_ordering='th'
  19. )(seq2)
  20. # seq2 = Flatten()(seq2)
  21. convLayers.append(seq2)
  22.  
  23. #inz = lambda shape,dtype:hiddenLayerInit.initilize(data.train.get_targets())
  24. seq = concat(convLayers)
  25. if config.drop_prob:
  26. seq = Dropout(config.drop_prob)(seq)
  27. for s in config.hidden_sizes:
  28. seq = Dense(s, activation='relu')(seq)
  29.  
  30. #need reshaping here
  31. seq = Reshape((200,3))(seq)
  32. # drop1 = SpatialDropout1D(0.3)(inputs)
  33. # print("The shape is ",seq.)
  34. sent_lstm = Bidirectional(GRU(100, name='blstm_1',
  35. activation='tanh',
  36. recurrent_activation='hard_sigmoid',
  37. recurrent_dropout=0.0,
  38. dropout=0.4,
  39. kernel_initializer='glorot_uniform',
  40. return_sequences=True),
  41. merge_mode='concat')(seq)
  42.  
  43. sent_att_layer = AttentionWithContext()(sent_lstm)
  44. # sentence_input = Input(shape=(MAX_SENT_LEN,),
  45. # dtype='float')
  46. # input_layer = Input(shape=(MAX_SEQ_LEN,config.doc_size),
  47. # dtype='int32')
  48. input_layer = Input(shape=(MAX_SEQ_LEN,config.doc_size),
  49. dtype='int32',name="input_2")
  50. sentEncoder = Model(inputs[0], sent_att_layer)
  51.  
  52. textEncoder = TimeDistributed(sentEncoder)(input_layer)
  53. drop2 = Dropout(0.4)(textEncoder)
  54.  
  55. lstm_1 = Bidirectional(GRU(100, name='blstm_2',
  56. activation='tanh',
  57. recurrent_activation='hard_sigmoid',
  58. recurrent_dropout=0.0,
  59. dropout=0.4,
  60. kernel_initializer='glorot_uniform',
  61. return_sequences=True),
  62. merge_mode='concat')(drop2)
  63. lstm_1 = BatchNormalization()(lstm_1)
  64. att_layer = AttentionWithContext()(lstm_1)
  65. drop3 = Dropout(0.5)(att_layer)
  66.  
  67. print("sequence printed")
  68. out = Dense(
  69. data.documents.target_dim, init=my_init,
  70. W_regularizer=W_regularizer(config),
  71. activation='sigmoid'
  72. )(drop3)
  73.  
  74.  
  75. model = Model(input=input_layer, output=out)
  76. # predictions = Dense(21, activation='sigmoid')(drop3)
  77. # model = Model(inputs=input_layer, outputs=predictions)
  78.  
  79. # for lay in model.layers:
  80. # print(lay)
  81. if config.verbosity != 0:
  82. logging.info(model.summary())
  83.  
  84. optimizer = get_optimizer(config)
  85. model.compile(
  86. loss='binary_crossentropy',
  87. optimizer=optimizer,
  88. #metrics=['accuracy', f1, prec, rec]
  89. metrics=['accuracy']
  90. )
  91.  
  92. early_stopping = EarlyStopping(monitor='val_loss', patience=6, verbose=0, mode='auto')
  93. weights, results = [], {}
  94. callbacks = [
  95. EpochTimer(),
  96. early_stopping,
  97. # WeightStore(weights),
  98. # document_evaluator(data.train, label='train', results=results),
  99.  
  100. evaluator(data.devel,model, label='devel', results=results)
  101.  
  102. ]
  103. # if config.test:
  104. # callbacks.append(document_evaluator(data.test, label='test',
  105. # results=results))
  106.  
  107. hist = model.fit(
  108. data.train.documents.inputs,
  109. data.train.documents.targets,
  110. validation_data=(
  111. data.devel.documents.inputs,
  112. data.devel.documents.targets,
  113. ),
  114. batch_size=config.batch_size,
  115. nb_epoch=config.epochs,
  116. callbacks=callbacks,
  117. verbose=config.verbosity
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement