parent
							
								
									c844aeabe4
								
							
						
					
					
						commit
						beeb42be56
					
				| @ -99,12 +99,14 @@ func handleEdit(handle *Handle) { | |||||||
| 		case TRAINING: | 		case TRAINING: | ||||||
| 
 | 
 | ||||||
| 			type defrow struct { | 			type defrow struct { | ||||||
|  | 				Id            string | ||||||
| 				Status        int | 				Status        int | ||||||
| 				EpochProgress int | 				EpochProgress int | ||||||
|  | 				Epoch         int | ||||||
| 				Accuracy      float64 | 				Accuracy      float64 | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			def_rows, err := c.Db.Query("select status, epoch_progress, accuracy from model_definition where model_id=$1", model.Id) | 			def_rows, err := c.Db.Query("select id, status, epoch, epoch_progress, accuracy from model_definition where model_id=$1 order by created_on asc", model.Id) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return c.Error500(err) | 				return c.Error500(err) | ||||||
| 			} | 			} | ||||||
| @ -114,16 +116,54 @@ func handleEdit(handle *Handle) { | |||||||
| 
 | 
 | ||||||
| 			for def_rows.Next() { | 			for def_rows.Next() { | ||||||
| 				var def defrow | 				var def defrow | ||||||
| 				err = def_rows.Scan(&def.Status, &def.EpochProgress, &def.Accuracy) | 				err = def_rows.Scan(&def.Id, &def.Status, &def.Epoch, &def.EpochProgress, &def.Accuracy) | ||||||
| 				if err != nil { | 				if err != nil { | ||||||
| 					return c.Error500(err) | 					return c.Error500(err) | ||||||
| 				} | 				} | ||||||
| 				defs = append(defs, def) | 				defs = append(defs, def) | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			type layerdef struct { | ||||||
|  | 				LayerType int | ||||||
|  | 				Shape     string | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			layers := []layerdef{} | ||||||
|  | 
 | ||||||
|  | 			for _, def := range defs { | ||||||
|  | 				if def.Status == MODEL_DEFINITION_STATUS_TRAINING { | ||||||
|  | 					rows, err := c.Db.Query("select layer_type, shape from model_definition_layer where def_id=$1 order by layer_order asc;", def.Id) | ||||||
|  | 					if err != nil { | ||||||
|  | 						return c.Error500(err) | ||||||
|  | 					} | ||||||
|  | 					defer rows.Close() | ||||||
|  | 
 | ||||||
|  | 					for rows.Next() { | ||||||
|  | 						var layerdef layerdef | ||||||
|  | 						err = rows.Scan(&layerdef.LayerType, &layerdef.Shape) | ||||||
|  | 						if err != nil { | ||||||
|  | 							return c.Error500(err) | ||||||
|  | 						} | ||||||
|  | 						layers = append(layers, layerdef) | ||||||
|  | 					} | ||||||
|  | 					break | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			sep_mod := 100 | ||||||
|  | 			if len(layers) > 8 { | ||||||
|  | 				sep_mod = 100 - (len(layers)-8)*10 | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if sep_mod < 10 { | ||||||
|  | 				sep_mod = 10 | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			LoadBasedOnAnswer(c.Mode, w, "/models/edit.html", c.AddMap(AnyMap{ | 			LoadBasedOnAnswer(c.Mode, w, "/models/edit.html", c.AddMap(AnyMap{ | ||||||
| 				"Model":  model, | 				"Model":  model, | ||||||
| 				"Defs":   defs, | 				"Defs":   defs, | ||||||
|  | 				"Layers": layers, | ||||||
|  | 				"SepMod": sep_mod, | ||||||
| 			})) | 			})) | ||||||
| 		case PREPARING_ZIP_FILE: | 		case PREPARING_ZIP_FILE: | ||||||
| 			LoadBasedOnAnswer(c.Mode, w, "/models/edit.html", c.AddMap(AnyMap{ | 			LoadBasedOnAnswer(c.Mode, w, "/models/edit.html", c.AddMap(AnyMap{ | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ import ( | |||||||
| 	. "git.andr3h3nriqu3s.com/andr3/fyp/logic/utils" | 	. "git.andr3h3nriqu3s.com/andr3/fyp/logic/utils" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const EPOCH_PER_RUN = 20 | const EPOCH_PER_RUN = 1 | ||||||
| const MAX_EPOCH = 100 | const MAX_EPOCH = 100 | ||||||
| 
 | 
 | ||||||
| func MakeDefenition(db *sql.DB, model_id string, target_accuracy int) (id string, err error) { | func MakeDefenition(db *sql.DB, model_id string, target_accuracy int) (id string, err error) { | ||||||
| @ -36,28 +36,6 @@ func MakeDefenition(db *sql.DB, model_id string, target_accuracy int) (id string | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type ModelDefinitionStatus int |  | ||||||
| 
 |  | ||||||
| const ( |  | ||||||
| 	MODEL_DEFINITION_STATUS_CANCELD_TRAINING                       = -4 |  | ||||||
| 	MODEL_DEFINITION_STATUS_FAILED_TRAINING                        = -3 |  | ||||||
| 	MODEL_DEFINITION_STATUS_PRE_INIT         ModelDefinitionStatus = 1 |  | ||||||
| 	MODEL_DEFINITION_STATUS_INIT                                   = 2 |  | ||||||
| 	MODEL_DEFINITION_STATUS_TRAINING                               = 3 |  | ||||||
| 	MODEL_DEFINITION_STATUS_PAUSED_TRAINING                        = 6 |  | ||||||
| 	MODEL_DEFINITION_STATUS_TRANIED                                = 4 |  | ||||||
| 	MODEL_DEFINITION_STATUS_READY                                  = 5 |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type LayerType int |  | ||||||
| 
 |  | ||||||
| const ( |  | ||||||
| 	LAYER_INPUT        LayerType = 1 |  | ||||||
| 	LAYER_DENSE                  = 2 |  | ||||||
| 	LAYER_FLATTEN                = 3 |  | ||||||
| 	LAYER_SIMPLE_BLOCK           = 4 |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| func ModelDefinitionUpdateStatus(c *Context, id string, status ModelDefinitionStatus) (err error) { | func ModelDefinitionUpdateStatus(c *Context, id string, status ModelDefinitionStatus) (err error) { | ||||||
| 	_, err = c.Db.Exec("update model_definition set status = $1 where id = $2", status, id) | 	_, err = c.Db.Exec("update model_definition set status = $1 where id = $2", status, id) | ||||||
| 	return | 	return | ||||||
| @ -301,7 +279,10 @@ func trainModel(c *Context, model *BaseModel) { | |||||||
| 			} | 			} | ||||||
| 			def.epoch += EPOCH_PER_RUN | 			def.epoch += EPOCH_PER_RUN | ||||||
| 			accuracy = accuracy * 100 | 			accuracy = accuracy * 100 | ||||||
| 			def.acuracy = accuracy | 			def.acuracy = float64(accuracy) | ||||||
|  | 
 | ||||||
|  | 			definitions[i].epoch += EPOCH_PER_RUN | ||||||
|  | 			definitions[i].acuracy = accuracy | ||||||
| 
 | 
 | ||||||
| 			if accuracy >= float64(def.target_accuracy) { | 			if accuracy >= float64(def.target_accuracy) { | ||||||
| 				c.Logger.Info("Found a definition that reaches target_accuracy!") | 				c.Logger.Info("Found a definition that reaches target_accuracy!") | ||||||
| @ -361,11 +342,11 @@ func trainModel(c *Context, model *BaseModel) { | |||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		sort.Sort(definitions) | 		sort.Reverse(definitions) | ||||||
| 
 | 
 | ||||||
| 		acc := definitions[0].acuracy - 20 | 		acc := definitions[0].acuracy - 20.0 | ||||||
| 
 | 
 | ||||||
| 		c.Logger.Info("Training models, Highest acc", "acc", acc) | 		c.Logger.Info("Training models, Highest acc", "acc", definitions[0].acuracy, "mod_acc", acc) | ||||||
| 
 | 
 | ||||||
| 		toRemove = []int{} | 		toRemove = []int{} | ||||||
| 		for i, def := range definitions { | 		for i, def := range definitions { | ||||||
|  | |||||||
| @ -29,14 +29,40 @@ const ( | |||||||
| 	READY                = 5 | 	READY                = 5 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | type ModelDefinitionStatus int | ||||||
|  | 
 | ||||||
|  | type LayerType int | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	LAYER_INPUT        LayerType = 1 | ||||||
|  | 	LAYER_DENSE                  = 2 | ||||||
|  | 	LAYER_FLATTEN                = 3 | ||||||
|  | 	LAYER_SIMPLE_BLOCK           = 4 | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	MODEL_DEFINITION_STATUS_CANCELD_TRAINING ModelDefinitionStatus = -4 | ||||||
|  | 	MODEL_DEFINITION_STATUS_FAILED_TRAINING                        = -3 | ||||||
|  | 	MODEL_DEFINITION_STATUS_PRE_INIT                               = 1 | ||||||
|  | 	MODEL_DEFINITION_STATUS_INIT                                   = 2 | ||||||
|  | 	MODEL_DEFINITION_STATUS_TRAINING                               = 3 | ||||||
|  | 	MODEL_DEFINITION_STATUS_PAUSED_TRAINING                        = 6 | ||||||
|  | 	MODEL_DEFINITION_STATUS_TRANIED                                = 4 | ||||||
|  | 	MODEL_DEFINITION_STATUS_READY                                  = 5 | ||||||
|  | ) | ||||||
|  | 
 | ||||||
| var ModelNotFoundError = errors.New("Model not found error") | var ModelNotFoundError = errors.New("Model not found error") | ||||||
| 
 | 
 | ||||||
| func GetBaseModel(db *sql.DB, id string) (base *BaseModel, err error) { | func GetBaseModel(db *sql.DB, id string) (base *BaseModel, err error) { | ||||||
| 	rows, err := db.Query("select name, status, id, width, height, color_mode, format from models where id=$1;", id) | 	rows, err := db.Query("select name, status, id, width, height, color_mode, format from models where id=$1;", id) | ||||||
| 	if err != nil { return } | 	if err != nil { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
| 	defer rows.Close() | 	defer rows.Close() | ||||||
| 
 | 
 | ||||||
| 	if !rows.Next() { return nil, ModelNotFoundError } | 	if !rows.Next() { | ||||||
|  | 		return nil, ModelNotFoundError | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	base = &BaseModel{} | 	base = &BaseModel{} | ||||||
| 	var colorMode string | 	var colorMode string | ||||||
|  | |||||||
| @ -563,12 +563,12 @@ func (x Handle) ReadTypesFiles(pathTest string, baseFilePath string, fileTypes [ | |||||||
| 		// fmt.Printf("Requested path: %s\n", user_path)
 | 		// fmt.Printf("Requested path: %s\n", user_path)
 | ||||||
| 
 | 
 | ||||||
| 		found := false | 		found := false | ||||||
|         index := -1; | 		index := -1 | ||||||
| 
 | 
 | ||||||
| 		for i, fileType := range fileTypes { | 		for i, fileType := range fileTypes { | ||||||
| 			if strings.HasSuffix(user_path, fileType) { | 			if strings.HasSuffix(user_path, fileType) { | ||||||
| 				found = true | 				found = true | ||||||
|                 index = i; | 				index = i | ||||||
| 				break | 				break | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -637,5 +637,11 @@ func NewHandler(db *sql.DB) *Handle { | |||||||
| 
 | 
 | ||||||
| func (x Handle) Startup() { | func (x Handle) Startup() { | ||||||
| 	fmt.Printf("Starting up!\n") | 	fmt.Printf("Starting up!\n") | ||||||
| 	log.Fatal(http.ListenAndServe(":8000", nil)) | 
 | ||||||
|  | 	port := os.Getenv("PORT") | ||||||
|  | 	if port == "" { | ||||||
|  | 		port = "8000" | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil)) | ||||||
| } | } | ||||||
|  | |||||||
| @ -437,6 +437,9 @@ | |||||||
|             <table> |             <table> | ||||||
|                 <thead> |                 <thead> | ||||||
|                     <tr> |                     <tr> | ||||||
|  |                         <th> | ||||||
|  |                             Done Progress | ||||||
|  |                         </th> | ||||||
|                         <th> |                         <th> | ||||||
|                             Training Round Progress |                             Training Round Progress | ||||||
|                         </th> |                         </th> | ||||||
| @ -451,6 +454,9 @@ | |||||||
|                 <tbody> |                 <tbody> | ||||||
|                     {{ range .Defs}} |                     {{ range .Defs}} | ||||||
|                         <tr> |                         <tr> | ||||||
|  |                             <td> | ||||||
|  |                                 {{.Epoch}} | ||||||
|  |                             </td> | ||||||
|                             <td> |                             <td> | ||||||
|                                 {{.EpochProgress}}/20 |                                 {{.EpochProgress}}/20 | ||||||
|                             </td> |                             </td> | ||||||
| @ -471,6 +477,49 @@ | |||||||
|                                 {{ end }} |                                 {{ end }} | ||||||
|                             </td> |                             </td> | ||||||
|                         </tr> |                         </tr> | ||||||
|  |                         {{ if (eq .Status 3) }} | ||||||
|  |                         <tr> | ||||||
|  |                             <td colspan="4"> | ||||||
|  |                                 <svg viewBox="0 200 1000 600"> | ||||||
|  |                                     {{ range $i, $layer := $.Layers }} | ||||||
|  |                                         {{ if (eq $layer.LayerType 1)}} | ||||||
|  |                                             <polygon  | ||||||
|  |                                                 points="50,450 200,250 200,550 50,750"  | ||||||
|  |                                                 stroke="black"  | ||||||
|  |                                                 stroke-width="2"  | ||||||
|  |                                                 fill="green"></polygon> | ||||||
|  |                                         {{ else if (eq $layer.LayerType 4)}} | ||||||
|  |                                             <polygon  | ||||||
|  |                                                 points="{{add 50 (mul $i $.SepMod) }},450 {{ add 200 (mul $i $.SepMod) }},250 {{add 200 (mul $i $.SepMod)}},550 {{ add 50 (mul $i $.SepMod) }},750"  | ||||||
|  |                                                 stroke="black"  | ||||||
|  |                                                 stroke-width="2"  | ||||||
|  |                                                 fill="orange"> | ||||||
|  |                                             </polygon> | ||||||
|  |                                         {{ else if (eq $layer.LayerType 3)}} | ||||||
|  |                                             <polygon  | ||||||
|  |                                                 points="{{add 50 (mul $i $.SepMod) }},450 {{ add 200 (mul $i $.SepMod) }},250 {{add 200 (mul $i $.SepMod)}},550 {{ add 50 (mul $i $.SepMod) }},750"  | ||||||
|  |                                                 stroke="black"  | ||||||
|  |                                                 stroke-width="2"  | ||||||
|  |                                                 fill="red"> | ||||||
|  |                                             </polygon> | ||||||
|  |                                         {{ else if (eq $layer.LayerType 2)}} | ||||||
|  |                                             <polygon  | ||||||
|  |                                                 points="{{add 50 (mul $i $.SepMod) }},550 {{ add 200 (mul $i $.SepMod) }},350 {{add 200 (mul $i $.SepMod)}},450 {{ add 50 (mul $i $.SepMod) }},650"  | ||||||
|  |                                                 stroke="black"  | ||||||
|  |                                                 stroke-width="2"  | ||||||
|  |                                                 fill="blue"> | ||||||
|  |                                             </polygon> | ||||||
|  |                                         {{ else }} | ||||||
|  |                                             <div>  | ||||||
|  |                                                 {{ .LayerType }} | ||||||
|  |                                                 {{ .Shape }} | ||||||
|  |                                             </div> | ||||||
|  |                                         {{ end }} | ||||||
|  |                                     {{ end }} | ||||||
|  |                                 </svg> | ||||||
|  |                             </td> | ||||||
|  |                         </tr> | ||||||
|  |                         {{ end }} | ||||||
|                     {{ end }} |                     {{ end }} | ||||||
|                 </tbody> |                 </tbody> | ||||||
|             </table> |             </table> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user