Renato Lui Geh

MSc graduate student in Computer Science

Institute of Mathematics and Statistics (IME) - University of São Paulo (USP)


I'm a graduate student working on my Masters degree in Computer Science at the Institute of Mathematics and Statistics (University of São Paulo). My Masters is on Bayesian Learning of Sum-Product Networks with Logical Constraints.

I graduated and received my Bachelor degree in Computer Science in 2018 at the Institute of Mathematics and Statistics, University of São Paulo. My undergraduate thesis was on Mobile Robot Self-Driving Through Image Classification Using Discriminative Learning of Sum-Product Networks, an extension of my undergraduate research on Automatic Learning of Sum-Product Networks using the SPN inference and learning library GoSPN we built during my undergraduate.

Below are some links about me:


My research focus is on reasoning under uncertainty through probabilistic graphical models, mostly with Sum-Product Networks. Other related interests in this field are representation, inference and learning of Bayesian and Markov networks and their applications on natural language processing and planning under uncertainty.

My masters' dissertation is on bayesian learning of sum-product networks with logical constraints. Bayesian inference consists of finding the model's posterior distribution (i.e. the distribution given by the parameters conditioned on data) instead of having a point estimate model. Our goal is to investigate the use of logical constraints as regularizers and domain knowledge when learning the model's structure. By allowing rules to be embedded as bayesian priors in SPN learning, we are able to integrate both expert knowledge as well as learn from data.

My undergraduate research project was on structural and parametrical learning of Sum-Product Networks. You can read more about it on the link below.

Undergraduate Research (Iniciação Científica)

My undergraduate research on structural and parametrical learning of sum-product networks.

A direct subproduct of my undergraduate research project is an inference and learning sum-product network library called GoSPN.


A library for inference and learning of Sum-Product Networks written in Go.

In 2018, I concluded my undergraduate thesis on autonomous driving of mobile robots through image classification using discriminative learning of sum-product networks. You can read more about it on the link below.

Undergraduate Thesis (TCC)

My undergraduate thesis on autonomous driving of mobile robots through image classification using discriminative learning of sum-product networks.

This work yielded a paper at the Brazilian National Meeting on Artificial and Computational Intelligence (ENIAC) in 2019, a collocated event at the Brazilian Conference on Intelligent Systems (BRACIS) 2019 [doi].


  • Renato L. Geh, Denis D. Mauá. "End-To-End Imitation Learning of Lane Following Policies Using Sum-Product Networks". 2019. Encontro Nacional de Inteligência Artificial e Computacional (ENIAC 2019). Ed. 15. [pdf] [doi]
  • Renato L. Geh, Denis D. Mauá. "Automatic Learning of Sum-Product Networks". 2018. Simpósio Internacional de Iniciação Científica da Universidade de São Paulo (SIICUSP XXVI). Ed. 26.


This section covers other side-projects (directly) unrelated to my research.

During my early years in university, I used to participate in competitive programming contests, such as ACM's ICPC. A great study group at IME-USP for competitive programming I was part of is MaratonIME.


A study group for competitive programming contests for students at the University of São Paulo.

From time to time I take part in game development contests with friends, such as Global Game Jam and Ludum Dare. All our games are open-source. Here are some:


A puzzle platformer entry submission for the 2014 Global Game Jam.

Marvellous Inc.

A puzzle programming game inspired by Zachtronic's games. This was an entry submission for the Ludum Dare 37 in 2016. We continued working on it after submission and released it on and Steam.
It also won Best Educational Game Award at the BIG Festival 2018!

I've recently become involved in the creation of yet another IME-USP student group.


FLUSP is a group dedicated to the development of FLOSS (Free Libre Open Source Software). We have an IRC channel at

, #ccsl-usp
Feel free to join us!

I'm a big fan of free open-source software, and I've been trying to give more to the community by contributing to software I use. :) I started on the Linux Kernel, but plan on going for Git and TensorFlow soon.

Linux Kernel

I like to contribute to the Linux Kernel as a hobby. :) Clicking on the link above will lead you to a list of submitted and accepted patches.


On August 4th 2019 I co-presented a talk on Object-oriented Techniques in C: A Case Study on Git and Linux together with Matheus Tavares at the 2019 Linux Developer Conference Brazil. I talked about OOP in the Linux Kernel, more especifically the Industrial Input/Output subsystem. Watch me make a fool of myself:

Slides: [pdf]


Here are some stuff I had to write for class. I doubt it'll be of use to anyone, but hoarded knowledge is useless knowledge.

Visualizing Generative Sum-Product Networks on Image Reconstruction

Article on Sum-Product Network (SPN) visualization on the image domain. Paper written for the Machine Learning in Computer Vision (MAC6914) course at IME-USP lectured by Prof. Nina S. T. Hirata in 2018.

A Polynomial-time Reduction of the 3-SAT to the Quadratic Congruence and Other Related Problems

A detailed explanation of Adleman and Manders' (brilliant, but very confusing and not very didactive) polynomial reduction of the quadratic congruence problem. Paper written for the Computational Number Theory (MAC6927) course at IME-USP given by Prof. Sinai Robins in 2017.

Anti-Coordination Games and Stable Graph Coloring

Written in portuguese. A presentation on anti-coordination games and stable graph coloring. This is based on Kun, Powers and Reyzin's article Anti-coordination Games and Stable Graph Coloring. In this presentation I explain in details the article's proofs and the reduction done for proving that strictly stable k-coloring on undirected graphs is NP-complete. Presentation done for Algorithmic Game Theory (MAC0466/MAC6909) given by Prof. Cristina Fernandes at IME-USP in 2017.


You can contact me through my institutional email:

Or my personal email:

I hate spam. Spam bots are getting smarter and smarter every day. That's why I add an obfuscation layer before showing my emails. I don't think spam bots have figured out how to press a button yet, so I think I'm safe. I could be wrong. I might also be paranoid.


This is my not-so-serious section for my homepage. Here I enumerate a few personal interests and opinions of mine.


I love music. But I have a special passion for jazz. Whether you're a first-time listener or an old time cat, I'm always up for talking about jazz and all its many subgenres with. If you're trying jazz for the first time, I maintain a curated list of jazz playlists on Spotify with different themes and subgenres. Since jazz covers such a broad spectrum of styles, this list may be useful for finding exactly what kind of groove you dig.

I play (poorly) the tenor saxophone. If you're from USP and would like to play jazz, bossa nova or blues, send me an email and we can go for a jam session. :)


I'm a firm believer of free and open-source software, and that includes Linux.

I tend to avoid discussions on "which Linux distribution is the best", since I believe every distribution has a specific target audience and goals. I'm an Arch Linux user myself ("you just had to say it, didn't you"), and I believe that every Linux user should go to the Arch Wiki for reference, regardless of distribution.


Ignore when people say Vim is hard to learn. They're often either being pretentious about using Vim or just giving an excuse for not learning.

I recommend Vim Adventures to learn how to Vim in a fun way (if you didn't think Vim was fun already). :)

For people who already use Vim, check out NeoVim, Vim's sucessor.


I hate throwing code away. I think everyone should have a repository containing "utility" scripts (i.e. "snippets"). Here is mine. If you haven't one yet, go make yours! :)