Install Keras with CUDA on Windows 10 PC


The objective of this post is guide you use Keras with CUDA on your Windows 10 PC.

Install Dependencies

Hardware: A graphic card from NVIDIA that support CUDA, of course.

Driver: Download and install the latest driver from NVIDIA or your OEM website

CUDA: Download and install version 7.5 from DO NOT install outdated driver intergrated in installer. Visual Studio integration and GPU Deployment Kit is not needed.

cuDNN: Download and copy all folder (there should be three: “bin”, “include”, “lib”) in zipped cuda folder to your CUDA installation folder (there should be “bin”, “include”, “lib”) You may need to register as an NVIDIA Accelerated Computing Developer Program member to process to download.

Python: Download and install Anaconda 2 from Run conda install mingw libpython after installation.

Visual Studio: Install version 2010, 2012, or 2013. Newer version is not supported. The free community version is fine. We just need the compiler.

Microsoft Visual C++ Compiler for Python 2.7: Download and install from

GCC: Download and install TDM-GCC from

Install Theano and Keras

Keras support Theano or Tensor Flow as backend. However, Tensor Flow with GPU is not support in Windows. So just use Theano as backend.

Just install as a common package of python
pip install theano keras

Configuring Theano

Write a plain text file named .theanorc (or .theanorc.txt if previous one is hard to create)in your user folder(C:\Users\<Your username here>\)

Contents is as following

floatX = float32
device = gpu

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

enabled = True


“device = gpu” means use gpu resource
Replace “C:\Apps\Anaconda2” to your installation path of your Anaconda 2. There is no space between “flags=-L” and the path.

Replace “C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin” to your installation path of Visual Studio. There should be a “cl.exe” at that path.

Replace “cnmem=0.75” to your free graphic card memory ratio. You may use GPU-Z from to determine how much memory can be allocated to Theano besides your normal usage (for screen display, etc.). Theano will eat that much memory (75% of memory in this configuration) when you initialize Theano every time.

Test Theano

Open python console and run import theano

It may be a little slow, but eventually it will print something like

Using gpu device 0: <Your GPU> (CNMeM is enabled with initial size: <Your cnmem ratio> of memory, cuDNN <numbers, whatever>)

Stop python console if it looks fine.

Configuring Keras

To manually assign Theano backend, change following lines in C:\Users\<Your username here>\.keras\keras.json

    "image_dim_ordering": "tf", 
    "epsilon": 1e-07, 
    "floatx": "float32", 
    "backend": "theano"

Replace "image_dim_ordering": "tf", to "image_dim_ordering": "th", to use Theano’s image channel order(BGR).

Replace "backend": "tensorflow" to "backend": "theano" to assign Theano as backend.

Test Keras

Just run the example from official repositry

Wait and you will know if it works well. You may also watch GPU-Z to know how many GPU resource is been used.


Now you get a fully workable Keras instance with CUDA acceleration.

PotPlayer Mini Skin Fixed for version 1.6.59347

After an update of PotPlayer, the older mini skin seems stopped working. Only a windows style border w/ title bar are shown with no control components nor progress bar. But modified mini skin on DA still working. So I wonder what’s the difference.

Analysis: PotPlayer skin file has ‘.dsf’ extension. Opening in hex editor, it has file head of “PK”. Obviously it’s ZIP. After extracting, it’s “VideoSkin.xml” that define the skin appearance. It seems that “VideoSkin.xml” of the original mini skin is some kind of broken or in wrong format which new version of PotPlayer can’t parse.

Fix: Correct hard-coded string in “VideoSkin.xml” and save as UTF-8(w/o BOM) and re-package into ZIP file.



要打败大魔王, 必须要有合适的方法, 也会有无论怎么尝试也找不到令自己信服方法时候
而因为时间原因很快就必须起床了的时候, 就只好瞎编一个方法骗过自己, 但是经常会很不甘心, 宁愿直接结束掉也不要用瞎编的






界面基于框架/模板, 易于修改