{"id":13413349,"url":"https://github.com/patrikeh/go-deep","last_synced_at":"2026-01-16T17:36:40.232Z","repository":{"id":27375599,"uuid":"113678399","full_name":"patrikeh/go-deep","owner":"patrikeh","description":"Artificial Neural Network","archived":false,"fork":false,"pushed_at":"2024-07-11T02:51:55.000Z","size":2327,"stargazers_count":530,"open_issues_count":2,"forks_count":65,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-07-31T20:52:16.100Z","etag":null,"topics":["backpropagation","classification","deep-learning","golang","neural-network","regression"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrikeh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-09T15:10:06.000Z","updated_at":"2024-07-20T06:45:37.000Z","dependencies_parsed_at":"2024-06-18T13:44:24.659Z","dependency_job_id":null,"html_url":"https://github.com/patrikeh/go-deep","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrikeh%2Fgo-deep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrikeh%2Fgo-deep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrikeh%2Fgo-deep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrikeh%2Fgo-deep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrikeh","download_url":"https://codeload.github.com/patrikeh/go-deep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221498740,"owners_count":16833055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backpropagation","classification","deep-learning","golang","neural-network","regression"],"created_at":"2024-07-30T20:01:38.359Z","updated_at":"2026-01-16T17:36:40.225Z","avatar_url":"https://github.com/patrikeh.png","language":"Go","funding_links":[],"categories":["Machine Learning","机器学习","Go","Neural Networks","Relational Databases"],"sub_categories":["Search and Analytic Databases","Advanced Console UIs","SQL 查询语句构建库","检索及分析资料库","Vector Database","交流"],"readme":"# go-deep\n\n[![GoDoc](https://godoc.org/github.com/patrikeh/go-deep?status.svg)](https://godoc.org/github.com/patrikeh/go-deep)\n[![Go Report Card](https://goreportcard.com/badge/github.com/patrikeh/go-deep)](https://goreportcard.com/report/github.com/patrikeh/go-deep)\n[![CircleCI](https://circleci.com/gh/patrikeh/go-deep/tree/master.svg?style=svg)](https://circleci.com/gh/patrikeh/go-deep/tree/master)\n[![codecov](https://codecov.io/gh/patrikeh/go-deep/branch/master/graph/badge.svg?token=fFCrxfhuL0)](https://codecov.io/gh/patrikeh/go-deep)\n\nFeed forward/backpropagation neural network implementation. Currently supports:\n\n- Activation functions: sigmoid, hyperbolic, ReLU\n- Solvers: SGD, SGD with momentum/nesterov, Adam\n- Classification modes: regression, multi-class, multi-label, binary\n- Supports batch training in parallel\n- Bias nodes\n\nNetworks are modeled as a set of neurons connected through synapses. No GPU computations - don't use this for any large scale applications.\n\n## Install\n\n```\ngo get -u github.com/patrikeh/go-deep\n```\n\n## Usage\n\nImport the go-deep package\n\n```go\nimport (\n\t\"fmt\"\n\tdeep \"github.com/patrikeh/go-deep\"\n\t\"github.com/patrikeh/go-deep/training\"\n)\n```\n\nDefine some data...\n\n```go\nvar data = training.Examples{\n\t{[]float64{2.7810836, 2.550537003}, []float64{0}},\n\t{[]float64{1.465489372, 2.362125076}, []float64{0}},\n\t{[]float64{3.396561688, 4.400293529}, []float64{0}},\n\t{[]float64{1.38807019, 1.850220317}, []float64{0}},\n\t{[]float64{7.627531214, 2.759262235}, []float64{1}},\n\t{[]float64{5.332441248, 2.088626775}, []float64{1}},\n\t{[]float64{6.922596716, 1.77106367}, []float64{1}},\n\t{[]float64{8.675418651, -0.242068655}, []float64{1}},\n}\n```\n\nCreate a network with two hidden layers of size 2 and 2 respectively:\n\n```go\nn := deep.NewNeural(\u0026deep.Config{\n\t/* Input dimensionality */\n\tInputs: 2,\n\t/* Two hidden layers consisting of two neurons each, and a single output */\n\tLayout: []int{2, 2, 1},\n\t/* Activation functions: Sigmoid, Tanh, ReLU, Linear */\n\tActivation: deep.ActivationSigmoid,\n\t/* Determines output layer activation \u0026 loss function:\n\tModeRegression: linear outputs with MSE loss\n\tModeMultiClass: softmax output with Cross Entropy loss\n\tModeMultiLabel: sigmoid output with Cross Entropy loss\n\tModeBinary: sigmoid output with binary CE loss */\n\tMode: deep.ModeBinary,\n\t/* Weight initializers: {deep.NewNormal(μ, σ), deep.NewUniform(μ, σ)} */\n\tWeight: deep.NewNormal(1.0, 0.0),\n\t/* Apply bias */\n\tBias: true,\n})\n```\n\nTrain:\n\n```go\n// params: learning rate, momentum, alpha decay, nesterov\noptimizer := training.NewSGD(0.05, 0.1, 1e-6, true)\n// params: optimizer, verbosity (print stats at every 50th iteration)\ntrainer := training.NewTrainer(optimizer, 50)\n\ntraining, heldout := data.Split(0.5)\ntrainer.Train(n, training, heldout, 1000) // training, validation, iterations\n```\n\nresulting in:\n\n```\nEpochs        Elapsed       Error\n---           ---           ---\n5             12.938µs      0.36438\n10            125.691µs     0.02261\n15            177.194µs     0.00404\n...\n1000          10.703839ms   0.00000\n```\n\nFinally, make some predictions:\n\n```go\nfmt.Println(data[0].Input, \"=\u003e\", n.Predict(data[0].Input))\nfmt.Println(data[5].Input, \"=\u003e\", n.Predict(data[5].Input))\n```\n\nAlternatively, batch training can be performed in parallell:\n\n```go\noptimizer := NewAdam(0.001, 0.9, 0.999, 1e-8)\n// params: optimizer, verbosity (print info at every n:th iteration), batch-size, number of workers\ntrainer := training.NewBatchTrainer(optimizer, 1, 200, 4)\n\ntraining, heldout := data.Split(0.75)\ntrainer.Train(n, training, heldout, 1000) // training, validation, iterations\n```\n\n## Examples\n\nSee `training/trainer_test.go` for a variety of toy examples of regression, multi-class classification, binary classification, etc.\n\nSee `examples/` for more realistic examples:\n\n| Dataset | Topology | Epochs | Accuracy |\n| ------- | -------- | ------ | -------- |\n| wines   | [5 5]    | 10000  | ~98%     |\n| mnist   | [50]     | 25     | ~97%     |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrikeh%2Fgo-deep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrikeh%2Fgo-deep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrikeh%2Fgo-deep/lists"}