Skip to main content

Installing Jax with GPU Support

I’ve been struggling with installing Jax with GPU support. Something seems to go wrong each time I try. Sometimes it can’t find the GPU. Other times some dynamic libraries will be missing. More frustratingly, sometimes things get messed up when I install new libraries such as Optax. Finally, I think I’ve got it all working. So here’s how I did it.

Read more…

Clustering MNIST digits with Self-organizing Maps

I read about self-organizing maps being used to solve the traveling salesman problem in a blog post and was intrigued by it. I was surprised that self-organizing maps could be used to get good, though not optimal, solutions to such a difficult problem.

When I read more about it, its basic algorithm didn’t seem too difficult. So I decided to have a go at it myself by seeing whether I can code it from scratch in PyTorch.

Git Repo here.

Read more…

My first foray into Rust: Querying data from the Federal Reserve of St. Louis

I’ve been enamoured by the Rust typing system and safety for some time now. After attending a couple of Udemy courses, I decided to get my hands dirty on an actual project. So I thought to replicate something I’ve done before in Python, which is to create a library that would help to obtain data from the Federal Reserve of St. Louis (FRED) data REST API.

Here are some of the deepest impressions that Rust has left on me in my little project.

Gitlab Repo Crates.io

Read more…

Thoughts on the Innovation Process

Innovation is a messy endeavour. You never know whether you are heading in the right direction and you fail all the time. A lot, if not most, of your ideas are useless, impractical and just fluff. To an outsider, it looks like you are wasting a lot of resources and meandering around aimlessly. In an organization, the sense that innovation is just a giant waste of time and a drag on the rest of the organization can feel acute.

Innovation is also necessary, both in our personal lives and the organizations we work in. How else would one break new ground? How can an organization solve problems better, faster and cheaper in ways that they don't already know? How can we discover new green fields to play in if we don't lift our heads up and look around and beyond?

The question is, how do we manage the tension between the chaos of creative forces and the orderly march towards realizing real world benefits, both in our personal lives and our organizations? How do we meander effectively?

Read more…

Enterprise Data Science. It’s complicated.

In 2017 I wrote a blog post on how data science efforts should be about building representations and nothing else. Now in 2021, four years older, I have different thoughts. I have come to realize that my thoughts four years ago were too myopic, too technically oriented. As it turns out, enterprise data science, like many things in life, is complicated.

Read more…

On Time-varying Markov Systems

In this article I consider a discrete time Markov system which has a transition matrix that is not constant over time. The derivation of the forward and backward Chapman-Kolmogorov equations is then shown.

In Markovian systems, the transition matrix determines the behaviour of the system and the Chapman-Kolmogorov equation is important as it allows us to associate the transition probability matrix, which may not be constant, changes the system across time and allows us to move through the system forwards and backwards in time, exploring the system behaviour fully.

Such systems are often encountered in real-world processes. For example, the transition probability of commuters on a train system will depend on the time of the day and day of the week.

Read more…