{"id":19380094,"url":"https://github.com/isosnovik/nn4topopt","last_synced_at":"2026-03-14T20:07:52.568Z","repository":{"id":38325972,"uuid":"99385474","full_name":"ISosnovik/nn4topopt","owner":"ISosnovik","description":"Code for \"Neural Networks for Topology Optimization\"","archived":false,"fork":false,"pushed_at":"2021-07-02T10:36:48.000Z","size":146,"stargazers_count":136,"open_issues_count":0,"forks_count":32,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-02T19:42:33.550Z","etag":null,"topics":["keras","neural-networks","python","tensorflow","topology-optimization"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ISosnovik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-04T23:05:52.000Z","updated_at":"2025-03-18T02:07:03.000Z","dependencies_parsed_at":"2022-08-25T03:01:47.195Z","dependency_job_id":null,"html_url":"https://github.com/ISosnovik/nn4topopt","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/ISosnovik%2Fnn4topopt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISosnovik%2Fnn4topopt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISosnovik%2Fnn4topopt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISosnovik%2Fnn4topopt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ISosnovik","download_url":"https://codeload.github.com/ISosnovik/nn4topopt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250499939,"owners_count":21440718,"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":["keras","neural-networks","python","tensorflow","topology-optimization"],"created_at":"2024-11-10T09:12:31.024Z","updated_at":"2026-03-14T20:07:47.500Z","avatar_url":"https://github.com/ISosnovik.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neural Networks for Topology Optimization\nThis is the code for the paper **I. Sosnovik, I. Oseledets \"Neural Networks for Topology Optimization\"**.\n[[link](https://www.degruyter.com/view/j/rnam.2019.34.issue-4/rnam-2019-0018/rnam-2019-0018.xml)][[pdf](https://arxiv.org/pdf/1709.09578.pdf)]\n\n*In this research, we propose a deep learning based approach for speeding up the topology optimization methods. The problem we seek to solve is the layout problem. The main novelty of this work is to state the problem as an image segmentation task. We leverage the power of deep learning methods as the efficient pixel-wise image labeling technique to perform the topology optimization. We introduce the convolutional encoder-decoder architecture and the overall approach of solving the above-described problem with high performance.*\n\n![](./src/model.png)\n\n## Preparations\nWe use [TOP dataset](https://github.com/ISosnovik/top) to train the model.\n\nIn order to work with dataset easier, we aggregate the files into one `.h5` dataset. \n\n```bash\npython prepare_data.py --source SOURCE_FOLDER --dataset-path WHERE_TO_SAVE\n```\n\n## Training\nYou can train the model with script `training.py`. Here is the list of arguments:\n\n* `--dataset-path` - path to `.h5` dataset\n* `--input-size` - size of the input tensor. Default is `40`\n* `--batch-size` - size of a minibatch. Default is `64`\n* `--epochs` - number of training epochs. Default is `30`\n* `--vol-coeff` - volume constraint coefficient in total loss. Default is `1.0`\n* `--iter-sampler` - iteration sampler. Either `uniform` or `poisson_\u003cLAM\u003e`, where `LAM` is lambda in Poisson distribution. Default is `uniform`\n* `--summary-prefix` - root folder to save the summary\n* `--save-prefix` - root folder to save the model\n\nJust type `bash experiments.sh` to run default experiments. \n\nNotebook `results.ipynb` demonstrates how to reproduce some of the results from the paper.\n\n## Citation\n\nIf you use this code for your research, please cite \n\n\t@article{sosnovik2017neural,\n\t  title={Neural networks for topology optimization},\n\t  author={Sosnovik, Ivan and Oseledets, Ivan},\n\t  journal={arXiv preprint arXiv:1709.09578},\n\t  year={2017}\n\t}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisosnovik%2Fnn4topopt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisosnovik%2Fnn4topopt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisosnovik%2Fnn4topopt/lists"}