Posts

Manage Your Java Environment

In case you are familiar with Pyhon, I guess you also have heard of virtualenv . This is a tool to create isolated Python environments, which lets you easily create or switch projects between Python 2 and Python 3. In Java, there are also different version out there. While version 7 or 8 are probably still most commonly used in production, even newer versions like 10 (current default of Ubuntu 18.04) or the preview of Java 11 (release expected in late September 2018) are available, too. Consequently, it can happen that you are working on several projects with different Java version requirements. The question is now: how can we switch between different installed JDKs? There are of course multiple possible answers. Two of them are the following... A. Setting the default Java version In case you have multiple Java versions installed, you can change the default version using the update-alternatives tool: $ sudo update-alternatives --config java This command will list you all ins...

Benchmarking Tensorflow Performance on eGPU

Image
In the last post, I wrote about how to setup an eGPU on Ubuntu to get started with TensorFlow. I shortly mentioned that a eGPU is definitely worth it for Machine Learning, but I did not tell any numbers. This article tries to catch up on that. There are a gazillion benchmarks already out there about GPU gaming performance. A handful of them also include eGPU benchmarks, like this one for example. One important thing that that these eGPU benchmarks show is that the use of an external display is from benefit, because otherwise the Thunderbolt 3 port becomes a bigger bottleneck. This is due to the fact that each rendered frame has be sent back to the internal display, which consumes valuable bandwidth of the 40 Gbps Thunderbolt 3 connection. However, there is no alternative for using an eGPU for Machine Learning, because the computed gradients have to be sent back to the CPU. Talking about Machine Learning, there are a few articles our official benchmarks about TensorFlow performanc...

How to setup an eGPU on Ubuntu for TensorFlow

Image
I remember when I read about eGPUs for the first time. The symbiosis of having a light weight laptop at university or on the go, but still having a desktop like power horse when having some spare-time at home sounded like a dream. But everything faded into obscurity because I almost lost full interest into gaming the last years. But this changed, since I'm spending a lot of time in deep learning since about two years. And it's well known that taking advantage of a GPU boosts training time by a huge margin. That's why I tried to get access to a high-performance graphics card in order to be able to train non-trivial networks and so some more serious research. At first, I had a look at some offers in the cloud. I did not try out a GPU-enabled instance on AWS, because the use a billing based on a hourly rate. This means that you have to pay for a full hour, even when you just run a simple example for 1 minute. Next, I checkout out the 300$ free credit on Google compute engi...

Setup Dell C1660W printer in Ubuntu

To be honest, this post is more or less a self-memo for myself. Nevertheless, this might be still helpful for others. While drivers for almost every hardware components or peripheral devices are automatically detected and installed in Windows, this is often not the case in Ubuntu. For instance, my Dell C1660W printer was not working in a plug & play fashion on Ubuntu 17.10. In order to setup this printer, I had to do the following steps: 1. Add a device in Settings > Devices > Printers 2. Download and install the Xerox Phaser 6000 drivers 3. Open the Printer Details of the printer added earlier 4. The the Xerox Phaser 6000B v1.0 driver using Select form Database... The printer is now ready to use. However, the driver does not fully work as expected. As an example, after every printing job, I have to restart the printer. Otherwise, the printer is simply rejecting the job, or it prints the job with some minutes delay outta nowhere.

Find your model's optimal hyperparameters with Hyperopt

While checking out some tools for automated hyperparameter optimization, I came across a quite popular library called Hyperopt . It provides an implementation for Random Search and Tree-of-Parzen-Estimators (TPE). Unfortunately, most examples out there us a dummy function to replace the model, but I could not find any example that uses TensorFlow. That's why I wanted to provide a basic simple Hyperopt example with TensorFlow. This example can be found on my Github . Do you have any experiences with other libraries for hyperparameter optimization? I would be happy if you share your experiences? For instance, I have read that a  Sacred  extension called Labwatch  also allows to define a search space for algorithmic hyperparameter optimization, but comes with different algorithms.

Better IDE support for Python with Type Hints

Image
About 12 years ago, I started to learn programming with Java and C#. Both languages are type-safe and have therefore a great support when using an IDE like Eclipse, IntelliJ or Visual Studio. But throughout my software development journey, I also made my hands dirty with other dynamically typed languages like JavaScript or Python. While checking out Angular2 more than a year ago, I used TypeScript for my first time, because it was recommended by the Angular team. I quickly realized how much painless it was to develop a web application with TypeScript instead of using classic JavaScript. The ability to strictly assigning a data type to a variable allows any IDE to offer much better tooling support, such as IntelliSense. At least in my point of view, programming in TypeScript felt much more like programming in C# than in JavaScript, where I always felt like I had to know every possible function name by heart. Which was especially difficult when you use JavaScript on a very non-regular...

Why should I install TensorFlow from Source?

There are various ways to install TensorFlow. For instance, you can install it using a Docker image or Python's package manager pip. But since the version 1.0 release of TensorFlow, you probably might have faced the following warnings each time you run a TensorFlow session: 2017-05-29 11:50:22.977500: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-29 11:50:22.977513: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-29 11:50:22.977517: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations. 2017-05-29 11:50:22.977519: W tenso...

Python + Matplotlib = Must Have on Every System

Image
In the last few weeks, I had to visualize some data from time to time. And for me, it turned out that the Python library Matplotlib is one of the best tools to do some quick plots. I cannot imagine that I have never installed Python on the Windows partition of my laptop, but only on my Linux partition. And I can really recommend to have Python and Matplotlib installed on every device, so that you have these tools at hand whenever you need to visualize some data. In this short post, I would like to write down the few simple steps you should do... 1. Install Python from Python Software Foundations Make sure you add python to your PATH , as well as select pip to be installed as well 2. Start your terminal, cmd or PowerShell 3. Install Matplotlib using the pip > pip install matplotlib 4. Start the python console > python 5. Import matplotlib.pyplot and make a plot with just a few lines of code > import matplotlib.pyplot as plt > plt.plot([8,4,2,1,0,1,2,4,8]...

Deep Learning Meetup 2017-1 in Munich

Image
I could check out another deep learning meetup. This time it was hosted at Google's Isar Valley here in Munich. The three interesting walks were about the following topics: Visual Sentiment Analysis with Deep Convolutional Neural Networks (by Dr. Damien Borth, DFKI) Strategies for AI Deployment (by Henrik Klagges, TNG Consulting GmbH) DGX-1 and SATURNV: The World’s Most Efficient Supercomputer for AI and Deep Learning (by Ralph Hinsche, Nvidia) In the third talk of Nvidia, we were also able to hold a test sample of the latest Tesla P100 in our hands, which is one of the building blocks of Nvidia's deep learning super computers called DGX-1 . This is a nice super toy that every AI-researcher would like to have under the Christmas tree. Unfortunately, a single device costs more than 100.000 US-Dollar.

Intel AI Days 2017

Image
I had the pleasure to check out Intel's first AI days in Europe. At ICM in Munich, Intel presented their latest advancements in Artificial Intelligence and Deep Learning in both hardware and software. As one of the biggest player in the hardware industry, they talked a lot about the next wave Xeon CPUs called Lake Crest , that is optimized for Deep Learning. Furthermore, a representative of Nervana Systems introduced their deep learning platform, which has been acquired by Intel for more than 400 Mio. US-Dollar in October 2016. Additionally, they talked a lot about low-level optimizations that they have done in order to accelerate many deep learning using Intel hardware, such as Intel Math Kernel Library ( MKL ). In some examples, they shows amazing improvements by a factor of up to 400. This sounds to good to be true in my ears, but even half of that is more than welcome! They presented their Neon framework , which feels to be in between TensorFlow and Keras, as we...

Universal App: PriceChecker

Image
Not sure whether the product you would like to purchase is an awesome deal or just another rip-off price? Well, my new PriceChecker app for Windows 10 might be the perfect match for you! Simply scan the barcode on the price tag and compare the consumer reviews and price on Amazon. The app is free of change and contains no adverts. So, what are you waiting for? Check it out and download it from the Windows Store...

UWPCore: A development acceleration framework for the Universal Windows Platform

Image
Since it has proven stability and reliability in two successful Windows 10 project for more than a year, we thought about to open source our service-driven framework. Even when it has not reached version 1.0 yet, you can nevertheless use it for your next project right now. Check out the UWPCore Framework on Github . I developed this framework in course of the last year together with my friend Patrick Mutter. More information about the framework is written down on the landing page of the repository. It even includes a short description of how to get started. In case you use our framework, and consider any kind of problem or bug, feel free to either open an issue on Github, or via a pull request.

Update: Action Note 2.2

Image
Action Note just received another update. Version 2.2 brings a couple of improvements: Added support to set Action Note as default app for Notes using the "onenote-cmd" protocol (PC/Tablet only) Updated UI of the sidebar-menu Fixed minor UI issues Added new languages: Dutch, Hungarian Due to the included "onenote-cmd" protocoll binding, Action Note is now finally able to be set as the default app for the "Note" button within the Action Center. Unfortunately, the app has to be set as default manually. Furthermore, the default app settings are not available on Windows 10 Mobile yet. By the way, this version of Action Note is powered on the (finally) first public release candidate of our framework for UWP based projects. As soon as the repository of the framework is public, I will post the link on this blog.

Update: Action Note 2.1

Image
After receiving some user reports regarding a synchronization issue of the Action Center since the latest Windows 10 update, I had to publish just another update for Action Note. After having a closer look, the reason of this problem was obvious, but not caused by the app itself. In one of the last updates, Microsoft enabled a new feature called Notification Mirroring, which synchronizes notifications across all devices using Cortana. Unfortunately, this was in conflict with Action Note's own cross-device online-sync feature. The fix for this was actually easy: I was simply able to disable this mirroring feature for all Action Note notifications. Personally, I would suggest that Microsoft should not auto-enable this feature be default. Beside that major fix, version 2.1 comes with a new alphabetical ordering option, which was requested by several users via email. Additionally, I updated the translations for the Polish and Swedish versions. Enjoy!

TensorLight: A high-level framework for TensorFlow projects

Image
In the course of the development of my Master's Thesis "Deep Learning Approaches to Predict Future Frames in Videos" at TUM, I realized that the high flexibility of TensorFlow has its price: boilerpate code. Many things that are needed in almost every neural network training or evaluation script have to be implemented over and over again. To that end, I started to implement a high-level API for Google's machine intelligence library, called TensorLight . TensorLight comes with four guiding principles: Simplicity:  Straight-forward to use for anybody who has already worked with TensorFlow. Especially, no further learning is required regarding how to define a model's graph definition. Compactness:  Reduce boilerplate code, while keeping the transparency and flexibility of TensorFlow. Standardization:  Provide a standard way in respect to the implementation of models and datasets in order to save time. Further, it automates the whole training and validatio...

Deep Learning Approaches to Predict Future Frames in Videos

Image
I finally finished my Master's Thesis in the Computer Vision chair at TUM. In the course of this thesis, I analyzed existing deep learning approaches to predict future frames in videos. Based on these findings and other modern deep learning practices, such as batch normalization, scheduled sampling to improve recurrent network training or ConvLSTMs, we were able to reach or event outperform state-of-the-art performance in future frame generation. So far, many people asked me about the practical application of frame prediction. Unfortunately, it won't tell us the end of any cliff-hanger movie such as Inception, but the main purpose of such a system is not to generate a perfect forecast of the long-term continuation of any movie clip. This completely impossible in my opinion, since there is not always a wrong or right in many situations. A neural network cannot be able to predict every decision made by all objects inside the scene. Furthermore, the pose of the camera or the ...

Language change...

I personally think it is time to switch to English. I'm personally not sure why I waited so long for this. But the advantages of using English in my posts are definitely dominant. To name just a few, it obviously reaches more people, as well as helps me to improve my own English writing skills. We never learn out! ;-)

Update: Action Note 1.15

Image
Soeben wurde ein neues Update Action Note veröffentlicht. Besonderen Wert wurde dabei auf das zahlreiche Nutze-Feedback der letzten Monate gelegt. Das Update ist dieses mal sehr umfassend und beinhaltet folgende Verbesserungen: Behebt Fehler, dass eine Notiz seit dem letzten Update nicht gespeichert werden konnte, wenn „automatisches Speichern“ deaktiviert wurde Möglichkeit einzelne Notizen im Action Center zu verstecken Neue Einstellung zum Definieren der Standard-Kategorie (Farbe) einer Notiz Neue Einstellungen für die Personalisierung der Haupt-Kachel Die Live-Kacheln heben nun auch wichtige Notizen mit dem Fahnen-Symbol hervor Behebt Problem, dass eine Notiz hin und wieder mehrfach ausgewählt werden musste um die Bearbeiten-Seite zu öffnen Verbessertes Kontextmenü, welches sich jetzt auch nicht erst öffnet, wenn man den Finger loslässt Hinzufügen von Tooltips für Optionen, welche keinen Beschreibungstext haben Anhänge, welche in der Free-Version oder bei deaktivi...

Update: Action Note 1.14

In den letzten Wochen haben hunderte Emails bezüglich Action Note den Weg zu mit gefunden. Dabei wurden mir einige interessante Ideen und Anregungen, aber auch Fehler in Action Note mitgeteilt. Einen Teil davon finden mit dem heutigen Update Einzug in die App. Das Update enthält im Detail folgende Änderungen: Neue Option, um die Notizen auf der Hauptseite / Archiv zu minimieren bzw. maximieren Neue Sync-Einstellungen: 4 Stunden Intervall und manuell Behebt Fehler, dass Notizen unnötig doppelt gespeichert wurden Behebt Fehler, dass eine Notiz unter gewissen Umständen gespeichert wurde, obwohl "Verwerfen" ausgewählt wurde Behebt Fehler, dass die Haupt-Kachel nicht aktualisiert wurde, wenn eine Notiz im Action Center gelöscht wurde Weitere kleinere Fehlerbehebungen Neue Sprache: Hebrew Letztlich möchte ich mich an dieser Stelle noch bei Roie Karpo aus Israel für die bereitgestellte Übersetzung herzlich bedanken!

Update: Photo Marker 2.6

Die Update-Reihe geht weiter. Heute hat Photo Marker ein kleines Update erhalten. Es beinhaltet folgende Änderungen: Behebt den Fehler, dass unter Windows 10 Mobile einige Fotos der Windows Camera nicht geöffnet werden könnten Zwei neue Schriftarten