model.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import math
  2. from keras import Input, Model
  3. from keras.layers import Dense, Concatenate, Embedding, LSTM, Bidirectional, Conv1D, GlobalMaxPooling1D
  4. def lstm_phrase(input_shape, output_shape=1):
  5. inputs = Input(shape=input_shape[0])
  6. x = Embedding(input_shape[1]+1, 16, input_length=input_shape[0])(inputs)
  7. # x = Dropout(0.2)(x)
  8. x = Bidirectional(LSTM(32))(x)
  9. # x = Dropout(0.2)(x)
  10. x = Dense(16)(x)
  11. x = Dense(output_shape, activation="sigmoid")(x)
  12. model = Model(inputs=inputs, outputs=x)
  13. # model.summary(line_length=100)
  14. return model
  15. def text_cnn_phrase(input_shape, output_shape=1):
  16. inputs = Input(shape=input_shape[0])
  17. x = Embedding(input_shape[1]+1, 50, input_length=input_shape[0])(inputs)
  18. x1 = Conv1D(64, 3, activation="relu", padding="same")(x)
  19. x1 = GlobalMaxPooling1D()(x1)
  20. x2 = Conv1D(64, 4, activation="relu", padding="same")(x)
  21. x2 = GlobalMaxPooling1D()(x2)
  22. x3 = Conv1D(64, 5, activation="relu", padding="same")(x)
  23. x3 = GlobalMaxPooling1D()(x3)
  24. x = Concatenate()([x1, x2, x3])
  25. x = Dense(output_shape, activation="sigmoid")(x)
  26. model = Model(inputs=inputs, outputs=x)
  27. model.summary(line_length=100)
  28. return model
  29. if __name__ == "__main__":
  30. text_cnn_phrase((3, 5792))
  31. print(math.log(5792, 2))