dnn_train.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import keras
  2. # -*- encoding:utf-8 -*-
  3. import numpy as np
  4. from keras.models import Sequential
  5. from keras.layers import Dense,Dropout
  6. import random
  7. from keras.models import load_model
  8. from imblearn.over_sampling import RandomOverSampler
  9. def read_data(path):
  10. train_x=[]
  11. train_y=[]
  12. lines = []
  13. with open(path) as f:
  14. for x in range(20000):
  15. lines.append(eval(f.readline().strip()))
  16. random.shuffle(lines)
  17. print('读取数据完毕')
  18. d=int(0.95*len(lines))
  19. size = len(lines[0])
  20. train_x=[s[:size - 2] for s in lines[0:d]]
  21. train_y=[s[size-1] for s in lines[0:d]]
  22. test_x=[s[:size - 2] for s in lines[d:]]
  23. test_y=[s[size-1] for s in lines[d:]]
  24. print('转换数据完毕')
  25. ros = RandomOverSampler(random_state=0)
  26. X_resampled, y_resampled = ros.fit_sample(np.array(train_x), np.array(train_y))
  27. print('数据重采样完毕')
  28. return X_resampled,y_resampled,np.array(test_x),np.array(test_y)
  29. train_x,train_y,test_x,test_y=read_data("D:\\data\\quantization\\stock4.log")
  30. model = Sequential()
  31. model.add(Dense(units=425, input_dim=166, activation='relu'))
  32. model.add(Dense(units=325, activation='relu'))
  33. model.add(Dense(units=325, activation='relu'))
  34. model.add(Dropout(0.2))
  35. # model.add(Dense(units=325, activation='relu'))
  36. # model.add(Dropout(0.2))
  37. # model.add(Dense(units=325, activation='relu'))
  38. # model.add(Dropout(0.2))
  39. # model.add(Dense(units=325, activation='relu'))
  40. # model.add(Dropout(0.2))
  41. # model.add(Dense(units=325, activation='relu'))
  42. # model.add(Dropout(0.2))
  43. # model.add(Dense(units=225, activation='relu'))
  44. # model.add(Dense(units=225, activation='relu'))
  45. # model.add(Dense(units=225, activation='relu'))
  46. model.add(Dense(units=225, activation='relu'))
  47. model.add(Dropout(0.2))
  48. # model.add(Dense(units=225, activation='relu'))
  49. model.add(Dense(units=125, activation='relu'))
  50. model.add(Dropout(0.2))
  51. # model.add(Dense(units=125, activation='relu'))
  52. model.add(Dense(units=166, activation='relu'))
  53. model.add(Dense(units=8, activation='softmax'))
  54. model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])
  55. print("Starting training ")
  56. h=model.fit(train_x, train_y, batch_size=64, epochs=26, shuffle=True)
  57. score = model.evaluate(test_x, test_y)
  58. print(score)
  59. print('Test score:', score[0])
  60. print('Test accuracy:', score[1])
  61. path="model_seq.h5"
  62. model.save(path)
  63. model=None
  64. model=load_model(path)
  65. result=model.predict(test_x)
  66. print(result)
  67. print(test_y)