network.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import numpy as np
  2. import keras
  3. def createModel(loss="mse", optimizer="adam"):
  4. return createModel1(loss, optimizer)
  5. def createModel1(loss="mse", optimizer="adam"):
  6. inputs = keras.Input(shape=(512*512,))
  7. x = keras.layers.Dense(128, activation="softsign")(inputs)
  8. x = keras.layers.Dense(32, activation="softsign")(x)
  9. outputs = keras.layers.Dense(4, activation="relu")(x)
  10. model = keras.Model(inputs=inputs, outputs=outputs)
  11. model.compile(optimizer=optimizer, loss=loss)
  12. model.summary()
  13. return model
  14. def createModel2(loss="mse", optimizer="adam"):
  15. inputs = keras.Input(shape=(512*512,))
  16. x = keras.layers.Dense(1024, activation="softsign")(inputs)
  17. x = keras.layers.Dense(128, activation="softsign")(x)
  18. x = keras.layers.Dense(32, activation="softsign")(x)
  19. outputs = keras.layers.Dense(4, activation="relu")(x)
  20. model = keras.Model(inputs=inputs, outputs=outputs)
  21. model.compile(optimizer=optimizer, loss=loss)
  22. model.summary()
  23. return model
  24. def createModelHistogram(nIn=4096, loss="mse", optimizer="adam", nInner=32, lastActivation="relu"):
  25. inputs = keras.Input(shape=(nIn,))
  26. x = keras.layers.Dense(128, activation="softsign")(inputs)
  27. x = keras.layers.Dense(32, activation="softsign")(x)
  28. outputs = keras.layers.Dense(5, activation=lastActivation)(x)
  29. model = keras.Model(inputs=inputs, outputs=outputs)
  30. model.compile(optimizer=optimizer, loss=loss)
  31. model.summary()
  32. return model
  33. def createModelHistogram2(loss="mse", optimizer="adam", nInner=32, lastActivation="sigmoid"):
  34. inputs = keras.Input(shape=(4096,))
  35. x = keras.layers.Reshape((4096,1))(inputs)
  36. x = keras.layers.AveragePooling1D(8)(x)
  37. x = keras.layers.Reshape((512,))(x)
  38. x = keras.layers.Dense(nInner, activation="softsign")(x)
  39. outputs = keras.layers.Dense(5, activation=lastActivation)(x)
  40. model = keras.Model(inputs=inputs, outputs=outputs)
  41. model.compile(optimizer=optimizer, loss=loss)
  42. model.summary()
  43. return model
  44. def createModelAe(loss="mse", optimizer="adam"):
  45. inputs = keras.Input(shape=(512*512,))
  46. x = inputs
  47. #x = keras.layers.Dense(128*128, activation="sigmoid")(x)
  48. x = keras.layers.Dense(32*32, activation="sigmoid")(x)
  49. #x = keras.layers.Dense(8*8, activation="sigmoid")(x)
  50. x = keras.layers.Dense(4, activation="sigmoid")(x)
  51. #x = keras.layers.Dense(8*8, activation="sigmoid")(x)
  52. x = keras.layers.Dense(32*32, activation="sigmoid")(x)
  53. #x = keras.layers.Dense(128*128, activation="relu")(x)
  54. outputsA = keras.layers.Dense(512*512, activation="relu")(x)
  55. y = keras.layers.Subtract()([inputs, outputsA])
  56. y = keras.layers.Dense(8*8, activation="sigmoid")(y)
  57. outputsB = keras.layers.Dense(5, activation="sigmoid")(y)
  58. modelA = keras.Model(inputs=inputs, outputs=outputsA)
  59. modelA.compile(optimizer=optimizer, loss=loss)
  60. modelA.summary()
  61. modelB = keras.Model(inputs=inputs, outputs=outputsB)
  62. modelB.compile(optimizer=optimizer, loss=loss)
  63. modelB.summary()
  64. return modelA, modelB
  65. def save(model, fileName="model.keras"):
  66. model.save(fileName)
  67. def load(fileName="model.keras"):
  68. return keras.saving.load_model(fileName)
  69. def toOneHot(arrItems, value):
  70. r = []
  71. for v in arrItems:
  72. if v == value:
  73. r.append(1.0)
  74. else:
  75. r.append(0.0)
  76. return r
  77. def smooth(w):
  78. v = []
  79. for p in range(len(w)):
  80. n = 0
  81. x = 0
  82. for k in [-2,-1,0,1,2]:
  83. if p + k >= 0 and p + k < len(w):
  84. x += w[p+k]
  85. n += 1
  86. v.append(x / n)
  87. return np.array(v)