runner now done
This commit is contained in:
@@ -101,6 +101,10 @@ func setModelClassStatus(c BasePack, status ModelClassStatus, filter string, arg
|
||||
return
|
||||
}
|
||||
|
||||
func SetModelClassStatus(c BasePack, status ModelClassStatus, filter string, args ...any) (err error) {
|
||||
return setModelClassStatus(c, status, filter, args...)
|
||||
}
|
||||
|
||||
func generateCvsExp(c BasePack, run_path string, model_id string, doPanic bool) (count int, err error) {
|
||||
|
||||
db := c.GetDb()
|
||||
@@ -1090,7 +1094,7 @@ func trainModelExp(c BasePack, model *BaseModel) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = splitModel(c, model); err != nil {
|
||||
if err = SplitModel(c, model); err != nil {
|
||||
err = setModelClassStatus(c, CLASS_STATUS_TO_TRAIN, "model_id=$1 and status=$2;", model.Id, CLASS_STATUS_TRAINING)
|
||||
if err != nil {
|
||||
l.Error("Failed to split the model! And Failed to set class status")
|
||||
@@ -1123,7 +1127,7 @@ func trainModelExp(c BasePack, model *BaseModel) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func splitModel(c BasePack, model *BaseModel) (err error) {
|
||||
func SplitModel(c BasePack, model *BaseModel) (err error) {
|
||||
db := c.GetDb()
|
||||
l := c.GetLogger()
|
||||
|
||||
@@ -1260,7 +1264,6 @@ func generateDefinition(c BasePack, model *BaseModel, target_accuracy int, numbe
|
||||
}
|
||||
|
||||
db := c.GetDb()
|
||||
l := c.GetLogger()
|
||||
|
||||
def, err := MakeDefenition(db, model.Id, target_accuracy)
|
||||
if err != nil {
|
||||
@@ -1279,67 +1282,35 @@ func generateDefinition(c BasePack, model *BaseModel, target_accuracy int, numbe
|
||||
}
|
||||
order++
|
||||
|
||||
if complexity == 0 {
|
||||
/*
|
||||
_, err = def.MakeLayer(db, order, LAYER_SIMPLE_BLOCK, "")
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
order++
|
||||
*/
|
||||
|
||||
_, err = def.MakeLayer(db, order, LAYER_FLATTEN, "")
|
||||
loop := max(1, int((math.Log(float64(model.Width)) / math.Log(float64(10)))))
|
||||
for i := 0; i < loop; i++ {
|
||||
_, err = def.MakeLayer(db, order, LAYER_SIMPLE_BLOCK, "")
|
||||
order++
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
order++
|
||||
}
|
||||
|
||||
loop := int(math.Log2(float64(number_of_classes)))
|
||||
for i := 0; i < loop; i++ {
|
||||
_, err = def.MakeLayer(db, order, LAYER_DENSE, ShapeToString(number_of_classes*(loop-i)))
|
||||
order++
|
||||
if err != nil {
|
||||
ModelUpdateStatus(c, model.Id, FAILED_PREPARING_TRAINING)
|
||||
return
|
||||
}
|
||||
}
|
||||
} else if complexity == 1 || complexity == 2 {
|
||||
loop := max(1, int((math.Log(float64(model.Width)) / math.Log(float64(10)))))
|
||||
for i := 0; i < loop; i++ {
|
||||
_, err = def.MakeLayer(db, order, LAYER_SIMPLE_BLOCK, "")
|
||||
order++
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
_, err = def.MakeLayer(db, order, LAYER_FLATTEN, "")
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
order++
|
||||
|
||||
loop = int((math.Log(float64(number_of_classes)) / math.Log(float64(10))) / 2)
|
||||
if loop == 0 {
|
||||
loop = 1
|
||||
}
|
||||
for i := 0; i < loop; i++ {
|
||||
_, err = def.MakeLayer(db, order, LAYER_DENSE, ShapeToString(number_of_classes*(loop-i)))
|
||||
order++
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
}
|
||||
} else {
|
||||
l.Error("Unkown complexity", "complexity", complexity)
|
||||
_, err = def.MakeLayer(db, order, LAYER_FLATTEN, "")
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
order++
|
||||
|
||||
loop = int((math.Log(float64(number_of_classes)) / math.Log(float64(10))) / 2)
|
||||
if loop == 0 {
|
||||
loop = 1
|
||||
}
|
||||
for i := 0; i < loop; i++ {
|
||||
_, err = def.MakeLayer(db, order, LAYER_DENSE, ShapeToString(number_of_classes*(loop-i)))
|
||||
order++
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return def.UpdateStatus(db, DEFINITION_STATUS_INIT)
|
||||
}
|
||||
@@ -1410,19 +1381,12 @@ func generateExpandableDefinition(c BasePack, model *BaseModel, target_accuracy
|
||||
|
||||
order := 1
|
||||
|
||||
width := model.Width
|
||||
height := model.Height
|
||||
|
||||
// Note the shape of the first layer defines the import size
|
||||
if complexity == 2 {
|
||||
// Note the shape for now is no used
|
||||
width := int(math.Pow(2, math.Floor(math.Log(float64(model.Width))/math.Log(2.0))))
|
||||
height := int(math.Pow(2, math.Floor(math.Log(float64(model.Height))/math.Log(2.0))))
|
||||
l.Warn("Complexity 2 creating model with smaller size", "width", width, "height", height)
|
||||
err = MakeLayerExpandable(c.GetDb(), def_id, order, LAYER_INPUT, ShapeToString(3, model.Width, model.Height), 1)
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
}
|
||||
|
||||
err = MakeLayerExpandable(c.GetDb(), def_id, order, LAYER_INPUT, fmt.Sprintf("%d,%d,1", width, height), 1)
|
||||
|
||||
order++
|
||||
|
||||
// handle the errors inside the pervious if block
|
||||
@@ -1460,7 +1424,7 @@ func generateExpandableDefinition(c BasePack, model *BaseModel, target_accuracy
|
||||
order++
|
||||
|
||||
// Flatten the blocks into dense
|
||||
err = MakeLayerExpandable(db, def_id, order, LAYER_DENSE, fmt.Sprintf("%d,1", number_of_classes*2), 1)
|
||||
err = MakeLayerExpandable(db, def_id, order, LAYER_DENSE, ShapeToString(number_of_classes*2), 1)
|
||||
if err != nil {
|
||||
failed()
|
||||
return
|
||||
@@ -1474,7 +1438,7 @@ func generateExpandableDefinition(c BasePack, model *BaseModel, target_accuracy
|
||||
loop = max(loop, 3)
|
||||
|
||||
for i := 0; i < loop; i++ {
|
||||
err = MakeLayerExpandable(db, def_id, order, LAYER_DENSE, fmt.Sprintf("%d,1", number_of_classes*(loop-i)*2), 2)
|
||||
err = MakeLayerExpandable(db, def_id, order, LAYER_DENSE, ShapeToString(number_of_classes*(loop-i)*2), 2)
|
||||
order++
|
||||
if err != nil {
|
||||
failed()
|
||||
@@ -1747,6 +1711,13 @@ func RunTaskRetrain(b BasePack, task Task) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = db.Exec("update exp_model_head set status=$1 where status=$2 and model_id=$3", MODEL_HEAD_STATUS_READY, MODEL_HEAD_STATUS_TRAINING, model.Id)
|
||||
if err != nil {
|
||||
l.Error("Error while updating the classes", "error", err)
|
||||
failed()
|
||||
return
|
||||
}
|
||||
|
||||
task.UpdateStatusLog(b, TASK_DONE, "Model finished retraining")
|
||||
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user