I have always wanted to “get into” machine learning, but I was always overwhelmed by the vast number of libraries, backends, and packages there are. I learn a lot by the implementation of something, much more so than just reading the math that describes the behavior.
This last semester of my masters degree, I am taking a deep learning course. Although this course isn’t focusing on implementation of algorithms primarily, I am planning on following along with implementation in Julia.
I have gotten pretty far already, and I have learned SO much more in doing so than what I have gotten out of the class so far. I wanted to document this process for anyone who is in a similar place and wants to learn more about using Julia for machine learning.
I have been working on a new library for a while now for RF/Microwave calculations in Julia and I got to a good stopping point to release v0.1
Check it out on my GitHub here
In this library, I provide functionality for some basic linear network analysis, plotting, cascading, stability calculations, and gain calculations.
I have been using Julia for about four months now and I must admit I am in love. I have found Julia to be extremely expressive and a perfect language for scientific computing (see my other blog post about FDFD). Most of what I have done has been structurally similar to MATLAB or Python’s numpy, but recently I have been getting used to something very different, Julia’s object system. There seem to be a lot of blog posts about this, but I wanted to elaborate on some of the subtleties.
There are many commercial solutions to solving Maxwell’s Equations for complex electromagnetics problems. This general purpose approach is great for commercial solvers, but doesn’t easily lend itself to specific problems for which a solver could be tailored for. There are a few open-source electromagnetics solvers, but the powerful of which are written in syntactically dense C or C++. For this project, I wanted to explore the simulation of a frequency-selective device, or FSS. Specifically, a binary-diffraction grating for mm-wave. These type of devices are well suited for simulation in the frequency domain. For the time being, I chose to stick with the traditional finite-difference method of solving the PDEs. So, presented in this text is a finite difference frequency domain solver using the modern programming language Julia. The device I am simulating is generalized to a 2D solution with periodic boundary conditions but could be easily extended to 3D.