library(tensorflow)
mnist <- tf$contrib$learn$datasets$mnist$read_data_sets(train_dir = "/tmp/MNIST", one_hot = T)
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
matrix.rotate <- function(img) { 
    img <- matrix(img, nrow=28L, byrow=T)
    t(apply(img, 2, rev))
}
par(mfrow=c(3, 3))
for (idx in 1:9) {
    label <- which.max(mnist$train$labels[idx, ]) - 1L
    image(matrix.rotate(mnist$train$images[idx, ]), col = grey(level = seq(1, 0, by=-1/255)), axes=F, main=label)
}

LS0tCnRpdGxlOiAiUiBNTklTVCBJbWFnZSBMb2FkIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0KbGlicmFyeSh0ZW5zb3JmbG93KQptbmlzdCA8LSB0ZiRjb250cmliJGxlYXJuJGRhdGFzZXRzJG1uaXN0JHJlYWRfZGF0YV9zZXRzKHRyYWluX2RpciA9ICIvdG1wL01OSVNUIiwgb25lX2hvdCA9IFQpCmBgYAoKYGBge3J9Cm1hdHJpeC5yb3RhdGUgPC0gZnVuY3Rpb24oaW1nKSB7IAogICAgaW1nIDwtIG1hdHJpeChpbWcsIG5yb3c9MjhMLCBieXJvdz1UKQogICAgdChhcHBseShpbWcsIDIsIHJldikpCn0KYGBgCgpgYGB7cn0KcGFyKG1mcm93PWMoMywgMykpCmZvciAoaWR4IGluIDE6OSkgewogICAgbGFiZWwgPC0gd2hpY2gubWF4KG1uaXN0JHRyYWluJGxhYmVsc1tpZHgsIF0pIC0gMUwKICAgIGltYWdlKG1hdHJpeC5yb3RhdGUobW5pc3QkdHJhaW4kaW1hZ2VzW2lkeCwgXSksIGNvbCA9IGdyZXkobGV2ZWwgPSBzZXEoMSwgMCwgYnk9LTEvMjU1KSksIGF4ZXM9RiwgbWFpbj1sYWJlbCkKfQoKYGBg