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

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

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

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/] 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/] 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/] 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