| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import numpy as np
- import keras
- def createModel(loss="mse", optimizer="adam"):
- return createModel1(loss, optimizer)
- def createModel1(loss="mse", optimizer="adam"):
- inputs = keras.Input(shape=(512*512,))
- x = keras.layers.Dense(128, activation="softsign")(inputs)
- x = keras.layers.Dense(32, activation="softsign")(x)
- outputs = keras.layers.Dense(4, activation="relu")(x)
- model = keras.Model(inputs=inputs, outputs=outputs)
- model.compile(optimizer=optimizer, loss=loss)
- model.summary()
- return model
- def createModel2(loss="mse", optimizer="adam"):
- inputs = keras.Input(shape=(512*512,))
- x = keras.layers.Dense(1024, activation="softsign")(inputs)
- x = keras.layers.Dense(128, activation="softsign")(x)
- x = keras.layers.Dense(32, activation="softsign")(x)
- outputs = keras.layers.Dense(4, activation="relu")(x)
- model = keras.Model(inputs=inputs, outputs=outputs)
- model.compile(optimizer=optimizer, loss=loss)
- model.summary()
- return model
- def createModelHistogram(nIn=4096, loss="mse", optimizer="adam", nInner=32, lastActivation="relu"):
- inputs = keras.Input(shape=(nIn,))
- x = keras.layers.Dense(128, activation="softsign")(inputs)
- x = keras.layers.Dense(32, activation="softsign")(x)
- outputs = keras.layers.Dense(5, activation=lastActivation)(x)
- model = keras.Model(inputs=inputs, outputs=outputs)
- model.compile(optimizer=optimizer, loss=loss)
- model.summary()
- return model
- def createModelHistogram2(loss="mse", optimizer="adam", nInner=32, lastActivation="sigmoid"):
- inputs = keras.Input(shape=(4096,))
- x = keras.layers.Reshape((4096,1))(inputs)
- x = keras.layers.AveragePooling1D(8)(x)
- x = keras.layers.Reshape((512,))(x)
- x = keras.layers.Dense(nInner, activation="softsign")(x)
- outputs = keras.layers.Dense(5, activation=lastActivation)(x)
- model = keras.Model(inputs=inputs, outputs=outputs)
- model.compile(optimizer=optimizer, loss=loss)
- model.summary()
- return model
- def createModelAe(loss="mse", optimizer="adam"):
- inputs = keras.Input(shape=(512*512,))
- x = inputs
- #x = keras.layers.Dense(128*128, activation="sigmoid")(x)
- x = keras.layers.Dense(32*32, activation="sigmoid")(x)
- #x = keras.layers.Dense(8*8, activation="sigmoid")(x)
- x = keras.layers.Dense(4, activation="sigmoid")(x)
- #x = keras.layers.Dense(8*8, activation="sigmoid")(x)
- x = keras.layers.Dense(32*32, activation="sigmoid")(x)
- #x = keras.layers.Dense(128*128, activation="relu")(x)
- outputsA = keras.layers.Dense(512*512, activation="relu")(x)
- y = keras.layers.Subtract()([inputs, outputsA])
- y = keras.layers.Dense(8*8, activation="sigmoid")(y)
- outputsB = keras.layers.Dense(5, activation="sigmoid")(y)
- modelA = keras.Model(inputs=inputs, outputs=outputsA)
- modelA.compile(optimizer=optimizer, loss=loss)
- modelA.summary()
-
- modelB = keras.Model(inputs=inputs, outputs=outputsB)
- modelB.compile(optimizer=optimizer, loss=loss)
- modelB.summary()
- return modelA, modelB
- def save(model, fileName="model.keras"):
- model.save(fileName)
- def load(fileName="model.keras"):
- return keras.saving.load_model(fileName)
-
- def toOneHot(arrItems, value):
- r = []
- for v in arrItems:
- if v == value:
- r.append(1.0)
- else:
- r.append(0.0)
- return r
- def smooth(w):
- v = []
- for p in range(len(w)):
- n = 0
- x = 0
- for k in [-2,-1,0,1,2]:
- if p + k >= 0 and p + k < len(w):
- x += w[p+k]
- n += 1
- v.append(x / n)
- return np.array(v)
|