[cover image] Architecture of Variational Autoencoder (image credit: Jian Zhong)

A Gentle Introduction to Variational Autoencoders: Concept and PyTorch Implementation Guide

The variational autoencoder (VAE) is a type of generative model that combines principles from neural networks and probabilistic models to learn the underlying probabilistic distribution of a dataset and generate new data samples similar to the given dataset. Due to its ability to combine probabilistic modeling and learn complex data distributions, VAEs have become a fundamental tool and have had a profound impact on the fields of machine learning and deep learning....

July 8, 2024 · 16 min · 3282 words · Jian Zhong
[cover image] Architecture of Autoencoder (image credit: Jian Zhong)

Autoencoders with PyTorch: Full Code Guide

An autoencoder is a type of artificial neural network that learns to create efficient codings, or representations, of unlabeled data, making it useful for unsupervised learning. Autoencoders can be used for tasks like reducing the number of dimensions in data, extracting important features, and removing noise. They’re also important for building semi-supervised learning models and generative models. The concept of autoencoders has inspired many advanced models. In this blog post, we’ll start with a simple introduction to autoencoders....

June 23, 2024 · 28 min · 5916 words · Jian Zhong
[cover image] data structure of PageContainer (image credit: Jian Zhong)

PageContainer: Fast, Direct Data I/O Without OS Buffering

When creating high-speed data streaming applications, it’s important to avoid unnecessary data transfer to keep things fast and efficient. Operating systems (OS) automatically buffer file input/output (I/O) in the computer’s memory. However, many data streaming applications already have their own buffering steps, making the OS’s additional buffering unnecessary. Disabling this OS buffering allows direct control of data transfer, but it requires the application to access data in sizes that are multiples of the system page size (or disk sector size)....

June 13, 2024 · 14 min · 2832 words · Jian Zhong
[cover image] Architecture of VGG Model (image credit: Jian Zhong)

Building and Training VGG with PyTorch: A Step-by-Step Guide

The VGG (Visual Geometry Group) model is a type of convolutional neural network (CNN) outlined in the paper Very Deep Convolutional Networks for Large-Scale Image Recognition. It’s known for its use of small convolution filters and deep layers, which helped it achieve top-notch performance in tasks like image classification. By stacking multiple layers with small kernel sizes, VGG can capture a wide range of features from input images. Plus, adding more rectification layers makes its decision-making process sharper and more accurate....

May 13, 2024 · 20 min · 4250 words · Jian Zhong
[cover image] diagram of the configuration file parser (image credit: Jian Zhong)

Building a Configuration File Parser with C++

Configuration files are commonly used to adjust settings in computer programs. I’m presently developing a configuration file parser for my high-speed data acquisition system using C++. Along the way, I’ve discovered some useful techniques involving C++ generics and inheritance that streamline coding. Therefore, I decided to document these tricks in the hope that they’ll be beneficial to others. You can find the ready-to-use source code for this configuration file parser in my GitHub repository....

April 21, 2024 · 21 min · 4369 words · Jian Zhong