Say you want to create an animation that shows how a neural network learns from data. Maybe something like this, where a neural network learns the shape of a sine function:
Here’s how I did that. First, get the code for the neural network, so you can follow along: ml-sine on GitHub
When training your model you’ll usually use a statement like this:
After every epoch we want to take a snapshot of how well our prediction fits the training data. Let’s iterate the epochs manually instead of using the epochs=100 argument:
epochs =100for epoch in np.arange(1, epochs):
self.model.fit(x_train, y_train, batch_size=128)
This allows us to run additional code in between the training epochs. We want to save a plot of our prediction and the ‘ground-truth’ y_train. Using matplotlib:
We’re using plt.savefig() to store an image of the plot on disk. We will end up with 100 images that we can turn into a slideshow video using ffmpeg. Assuming the images are stored in a subfolder named img:
Philipp Antar
Rhinower Str. 7
10437 Berlin
Vertreten durch:
Philipp Antar
Kontakt:
Telefon: 0178-1457886
E-Mail: [email protected]
Haftungsausschluss:
Haftung für Inhalte
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
Haftung für Links
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Datenschutz
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
Impressum vom Impressum Generator der Kanzlei Hasselbach, Bonn
How does Github pages work? (skip if you know this)
Many static pages generators will generate a single public as output. This folders contains the entire generated site. On GitHub you can create a repository with the special name <your GitHub username>.github.io, in my case p886.github.io. Doing so will create a webpage at the address http://github_user_name.github.io.
The problem with static page generators and GitHub pages
The tricky part is that the master branch of that repository should contain the site (the content of the aforementioned public folder), while on the other hand you probably want to keep the source files of that page (in my case of collection of markdown files) in the same repository.
The solution
My p886.github.io repository has two branches: master and source. master contains the generated HTML, which is copied over on each deployment from the source branches’ public folder. How do I go about copying the HTML files from one branch to another? I found that the easiest solution is to have the project cloned locally two times. One clone contains only the master branch, another one only the source branch. When creating a post I add the markdown file in the source clone. After commiting the new post I run the static page generator to create the public directory. Subsequently I copy the contents of the public directory to the master clone. A new commit in the master checkout is created which contains the site. This commit is then pushed to the remote repository to have the new content online.
In reality I automated most of this. After I created the commit containing the new post in the source checkout I run this bash script:
Summary
The key is two have two branches in the repository: master and source. Locally the repository is cloned twice: once with the master and again with the source branch.