worked on #32
This commit is contained in:
@@ -7,10 +7,8 @@ from keras import layers, losses, optimizers
|
||||
import requests
|
||||
|
||||
class NotifyServerCallback(tf.keras.callbacks.Callback):
|
||||
def on_epoch_begin(self, epoch, *args, **kwargs):
|
||||
if (epoch % 5) == 0:
|
||||
# TODO change this
|
||||
requests.get(f'http://localhost:8000/model/epoch/update?model_id={{.Model.Id}}&epoch={epoch}&definition={{.DefId}}')
|
||||
def on_epoch_end(self, epoch, log, *args, **kwargs):
|
||||
requests.get(f'http://localhost:8000/model/epoch/update?model_id={{.Model.Id}}&epoch={epoch}&accuracy={log["accuracy"]}&definition={{.DefId}}')
|
||||
|
||||
|
||||
DATA_DIR = "{{ .DataDir }}"
|
||||
@@ -84,7 +82,7 @@ def filterDataset(path):
|
||||
|
||||
seed = random.randint(0, 100000000)
|
||||
|
||||
batch_size = 100
|
||||
batch_size = 64
|
||||
|
||||
# Read all the files from the direcotry
|
||||
list_ds = tf.data.Dataset.list_files(str(f'{DATA_DIR}/*'), shuffle=False)
|
||||
@@ -102,23 +100,55 @@ val_ds = list_ds.take(val_size)
|
||||
dataset = prepare_dataset(train_ds)
|
||||
dataset_validation = prepare_dataset(val_ds)
|
||||
|
||||
track = 0
|
||||
|
||||
def addBlock(
|
||||
b_size: int,
|
||||
filter_size: int,
|
||||
kernel_size: int = 3,
|
||||
top: bool = True,
|
||||
pooling_same: bool = False,
|
||||
pool_func=layers.MaxPool2D
|
||||
):
|
||||
global track
|
||||
model = keras.Sequential(name=f"{track}-{b_size}-{filter_size}-{kernel_size}")
|
||||
track += 1
|
||||
for _ in range(b_size):
|
||||
model.add(layers.Conv2D(
|
||||
filter_size,
|
||||
kernel_size,
|
||||
padding="same"
|
||||
))
|
||||
model.add(layers.ReLU())
|
||||
if top:
|
||||
if pooling_same:
|
||||
model.add(pool_func(padding="same", strides=(1, 1)))
|
||||
else:
|
||||
model.add(pool_func())
|
||||
model.add(layers.BatchNormalization())
|
||||
model.add(layers.LeakyReLU())
|
||||
model.add(layers.Dropout(0.4))
|
||||
return model
|
||||
|
||||
|
||||
{{ if .LoadPrev }}
|
||||
model = tf.keras.saving.load_model('{{.LastModelRunPath}}')
|
||||
{{ else }}
|
||||
model = keras.Sequential([
|
||||
{{- range .Layers }}
|
||||
{{- if eq .LayerType 1}}
|
||||
layers.Rescaling(1./255),
|
||||
{{- else if eq .LayerType 2 }}
|
||||
layers.Dense({{ .Shape }}, activation="sigmoid"),
|
||||
{{- else if eq .LayerType 3}}
|
||||
layers.Flatten(),
|
||||
{{- else }}
|
||||
ERROR
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
])
|
||||
model = keras.Sequential()
|
||||
|
||||
{{- range .Layers }}
|
||||
{{- if eq .LayerType 1}}
|
||||
model.add(layers.Rescaling(1./255))
|
||||
{{- else if eq .LayerType 2 }}
|
||||
model.add(layers.Dense({{ .Shape }}, activation="sigmoid"))
|
||||
{{- else if eq .LayerType 3}}
|
||||
model.add(layers.Flatten())
|
||||
{{- else if eq .LayerType 4}}
|
||||
model.add(addBlock(2, 128, 3, pool_func=layers.AveragePooling2D))
|
||||
{{- else }}
|
||||
ERROR
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
|
||||
model.compile(
|
||||
@@ -126,7 +156,7 @@ model.compile(
|
||||
optimizer=tf.keras.optimizers.Adam(),
|
||||
metrics=['accuracy'])
|
||||
|
||||
his = model.fit(dataset, validation_data= dataset_validation, epochs={{.EPOCH_PER_RUN}}, callbacks=[NotifyServerCallback()])
|
||||
his = model.fit(dataset, validation_data= dataset_validation, epochs={{.EPOCH_PER_RUN}}, callbacks=[NotifyServerCallback()], use_multiprocessing = True)
|
||||
|
||||
acc = his.history["accuracy"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user