Works in github, etc
(except code for DRL of Montezuma‘s Revenge. See other slide for that)
(Staff Service Engineering, Hitachi Ltd OB)
Analysis of the intermediate layer of VAE (1)
Usually intermediate layer of VAE (Variational Auto Encorder) is
visualized by 2D figure like following (MNIST example).
But, generally, the dimension of intermediate layer is much higher.
High dimensional analysis of the structure of intermediate layer
looks like important.
Analysis of the intermediate layer of VAE (2)
By experiment, it turned out that only 11 dimensons are active in
intermediate layer even though the dimension of intermediate layer is 30.
(experiment code does not inlude terms for sparseness)
Analysis of the intermediate layer of VAE (3)
Approximated the ditribution of each numeric
character images by 30D sphere. => 10.7% error
Analysis of the intermediate layer of VAE (4)
Approximated the ditribution by mulivariate normal
distribution (spheroid) => 4.8% error (much better!)
Analysis of the structure of MNIST data set
Assumtion: Simple stucture of the intermediate layer of VAE
comes from simpleness of the structure of MNIST data set.
Result: CONFIRMED Assumption!
784 (=28 * 28) dimensional space of MNIST data set has rather
simple structure that can be approximated by 10 spheriods.
In this analysis, 50,000 images
have been used.
In previous analysis, 10,000
images have been used and
another analysis by 50,000
images become 5.8% error.
So, original structures in 784D
space have almost same
compactness as in 30D
structure in intermediate layer
of VAE. This result looks like
natural because VAE is
unsupervised learning and no
Scripts to fully utilize GCP preemptible VM
Backgroud: GCP (Google Cloud Platform) preemptible VM is very
cheap (costs 1/3), but it may stop any time.
=> Some control is mandatory.
Published scripts in github fully utilize GCP preemptible VM
for people who try my A3C+OHL code.
Effect: The scripts enable the full use of IT resource.
It can use 4VPU x 8 VM with free trial condition (2 month , $300).
GCP preemptible VMs
(2 months, $300 free trial)
(1 year free trial)
Periodically, watch VMs and re-start
stopped VMs (once per 1 min.), create
web page summarizing the status of
training (once per 5 min.)
K-means classification of MNIST dataset
In Do2dl research group, we read the book on AI and there was a
explanation of k-means classificaition method. I said that it might be
interesting to apply k-means method to MNIST dataset.
Because nobody other than me have a time, I wrote the code for that
and uploaded it to github.
Actually, there was a chapter written on much sophisticated
classification method EM-algorithm in following pages.
I compared both results. When starting with random images, k-means
was better (50% correct) than EM-algorithm (less than 50% correct).
When starting with images created from center of 20 images of each
number, EM-algorithm become better (71.5%) than k-means (60.5%)
Tools for Renaming titles in BD-recorder
Backgroud: My BD-recorder has a web interface to rename titles in it.
But it takes time to rename many titles.
Developed tools to rename titles in BD-recorder using renaming rules.
Renaming rule replace strings/regexp in titles to another string.
1. Determine new titles by setting
(renaming rules are automatically saved and
2. Automatically rename titles in BD-recorder
using web interface of BD-recorder
Executable version of Python Tutorial
After I learned python using Python tutorial, I felt that it might be
convinient if I could execute examples in tutorial directly.
So, I extracted the examples in tutorial as python scripts and
published them on github 1 week after I started learning of python.
They can be edited and executed directly.
They output example code and thier execution result (including error)
After that, I learned juypyter notebook. So, I coverted entire tuturial to
jupyter notebook and published it on github 1 week after.
Program template for scraping with NodeJS and Selenium
I developed a tool to download content of an internet school
(dotinstall.com) to enable offline study, and published it on github and
informed on my twitter.
I got claim from dotinstall.com. So, I deleted it immediately.
But I think that the general program framework for scraping is usefull
for many people and is not illegal. So, I published program template of
scraping with NodeJS and Seleinum on github.
Pico-os of MicroPython
I got ESP8266 (very cheap microprocessor with WIFI, i.e. less than
$5), on which MicroPython was embedded (The presenter of
introductory semintor of Python gave 2 ESP8266 to audience).
Unfortunately, the method the presenter wrote MicroPython to
EEPROM of ESP 8266 was not complete (I clould not write any file to
filesystem on EEPROM).
So, I build an environment to write to EEPROM by myself and re-
wrote MicroPython to ESP8266.
I measured the performance of MicroPython on EEPROM too.
(Roughly 1/1000 of Intel CPU. Memory size is also roughly 1/1000)
To make experiment on MicroPython easy, I wrote very very small
interface library to use MicroPython on ESP8266. I named it “Pico-os“
and uploaded it to github.
I wrote the article in blog and twitter too.
1000 times speedup of re-calculation in big EXCEL sheet
There was a very big EXCEL sheet containing over 120,000 lines.
Re-culculation of the sheet took several hours.
They re-calcalate the sheet 13 times every month and it needs
human intervention in the middle of re-calculation.
I investgated the expressions in cells and found that repeated use of
COUNTA and VLOOKUP with perfect match mode look like the
cause. (Both founctions need O(n) time when they search n lines)
I reduced the use of COUNTA as onece and used VLOOKUP with
approximate mode (The latter needs only O(log(n)) time. Actually
more complex expression is needed)
By these alternation, the time of re-cauclation become few seconds.
(More than 1,000 times speedup)