You are browsing as a guest. Sign up (or log in) to start making projects!

crazydave

@crazydave

Joined June 5th, 2026

  • 23Devlogs
  • 8Projects
  • 5Ships
  • 60Votes
crazily daving some projects, currently working on Qrystal - check it out
Open comments for this post

6h 30m 37s logged

After training it with the updated code, the output was terrible although the error was much lower, so I was really confused. I wasn’t sure what went wrong, and it took me a very long time to figure it out. When training, I feed in the previous step’s memory back into it and in training the memory is never wiped each epoch. However, when testing the output, I initialised it with a memory of just zeros, which it had barely experienced training with so wasn’t able to output meaningful things. I was able to fix it by initialising its memory on the training text itself to give it a memory state it is used to and that fixed it. You can see an output from it below.

0
0
49
Open comments for this post

5h 33m 43s logged

I did multiple training sessions and tweaked the learning rate, as after training with more layers and complexity, the model ended up with a much worse rate. I tried decreasing the learning rate and that led to a much better result. I then implemented something which reduces the learning rate over time, so that hopefully it will not plateau. I am thinking that to get to more levels of complexity in terms of producing actual content i will need to turn it into a LSTM, which has long and short memory. I am going to train it for a while now with the update and see how it goes.

0
0
16
Open comments for this post

6h 10m 38s logged

I updated the rnn to support multiple hidden layers, as previously it had a single layer, so I had to update the forward and backwards passes as well as the adagrad to account for the multiple layers. I started off with two and tested it with a hidden size of 256, but I didn’t see any improvement, however I didn’t train it for as long. I am now in the process of implementing a variable number of layers from 1 to any number, so that the model can learn greater complexity, however this comes at the cost of much slower training. Currently the training on 2 layers is a decent slowdown compared to with 1 layer, as i also increased hidden size to 512. So far I have made the forward pass work for multiple layers (greater than 2) but the rest of it still only supports 2 layers.

0
0
43
Open comments for this post

13h 18m 30s logged

I am making a recurrent neural network from scratch in python using numpy, trained on Shakespeare text to generate character-by-character in his style.This is an improvement on the previous neural network that I made as it keeps a memory based on the things it has recently seen, so it’s next prediction depends on what it has previously seen which will hopefully make it be able to learn more advanced patterns.I added loading and chunking of data, so basically it takes in a text file, and then it splits it into chunks (I use 25 character long chunks) in pairs with one shifted across by one and saves it as input and targets.I wrote the forward pass, loops through each character in a chunk, updates a hidden state with tanh, then a softmax over the vocab to predict the next character.I implemented backprop through time, which was definitely the hardest part, had a few off-by-one bugs in the hidden state indexing that took a while to track down.I did a numerical gradient check to double-check the backward pass against finite differences before training it, and realised I forgot to update the bias gradient so it wasn’t training properly.I used adagrad as the matrix updater from the gradients which works by updating the gradients by a smaller and smaller amount each time (I looked it up and apparently it is a good way to do it).I wrote the output function where I give it an input function, and then the model predicts the next character, and then it feeds the output back into the model and repeats for as many characters as I want.I then trained it on Shakespeare text and ran 100k iterations at hidden size 100, took about 2 mins and started outputting vaguely word-shaped gibberish with correct capitalisation and character-name formatting.I then increased the hidden size from 100 to 256 and trained it more, and it still looks like gibberish but improved a bit, some of the output is what you can see in the screenshot.

1
0
35
Ship

I made an evolutionary neural network from scratch which plays a number guessing game where it has to try and guess a random number between 1 and 1000 in as little attempts as possible, and it learnt a rough version of binary search from scratch, which I think is super cool! The most challenging part of this project was determining a fitness function which best allowed the model to learn what I wanted it to learn, and many iterations of the fitness function would lead to the model making safe guesses, repeating guesses, or getting stuck in loops. I also added command line arguments to the code so that people can use it in their terminal without editing the python file. To test it, follow the install instructions on the README, you can either download the python code and run that, or download the compiled versions in the releases page on Github.

  • 4 devlogs
  • 15h
  • 17.30x multiplier
  • 265 Stardust
Try project → See source code →
Open comments for this post

2h 22m 12s logged

I tried to make a website that people could view this on but I couldn’t figure out how to do it without fully rewriting the neural net in javascript, which will take a very long time (maybe I will do this in a future ship), so instead I made a file called interactive.py which lets people test out the model’s number guessing skills. I also simplified the fitness function a lot as much of the old fitness function was redundant due to previous changes that I made, and it now simply returns -self.guesses. I also made compiled versions of it for windows, Mac, and linux, so that people without python installed can try it out, it’s on the GitHub releases page. Also the pull requests look super sus with thousands of lines of code change but it is because I store the best model in a .pkl which was being changed as I worked on it so makes loads of changes to the commit :(

0
0
14
Ship

I made a single-layer perceptron from scratch, which is a machine learning algorithm. I decided to make this as I am currently learning about perceptrons in my computer science class and thought it would be cool to try and implement one in python. I made a version that can seperate data-points above and below the line x+y=10 and then a more advanced version which can detect if emails are spam or not spam. It was challenging to convert the emails.csv into inputs that the perceptron could handle, but after some research I found that TF-IDF is a good way of converting the emails into vectorised inputs that the perceptron can handle, and then made it output -1 for not spam or +1 for spam. I am proud of how accurate the perceptron is when using such a simple machine learning model, and it is also really cool to watch the simple higher-lower perceptron seperate the points in 2D with a line in real-time. To test it, follow the setup instructions in the README. I hope you enjoy!

  • 1 devlog
  • 1h
  • 4.91x multiplier
  • 7 Stardust
Try project → See source code →
Open comments for this post

1h 26m 36s logged

I made a perceptron which can detect spam emails, as we learnt about them in my computer science class, so I decided to try and implement one from scratch. I first made a basic perceptron that can seperate points that lie above or below the line x+y=10 line, and then applied the same algorithm to classify emails as either spam or not spam. It ended up working really well and gets 99.21% accuracy for spam detection.

0
0
5
Open comments for this post

3h 45m 33s logged

I decided to implement the change where the model outputs a number between 0 and 1 to represent somewhere within the high/low range of numbers it can currently guess between, and also added a new input to the neural network telling it the number of guesses so far. Both of these changes drastically improved the model and now it averages around 9 guesses to find the number, which is an amazing result. I only got to this after playing around with trying to change the fitness function again to not much success, but I am glad this idea worked. Next time I work on it I will add a user interface on an online website with the final trained model so people can try it out.

0
0
3
Open comments for this post

5h 17m 5s logged

After training it overnight it was able to solve the game in an average of 35 attempts, however as I cut it off after 50 I reckon the actual attempts would be much higher. Due to this lack of performance, I have decided to try and improve the fitness function so that it trains more effectively. I spent many hours trying to modify the fitness function and test it hoping that it would lead to a better solve rate but so far I am without success. It would keep repeatedly guessing the same number so I added a penalty if it guesses the same number as the round before. It would then alternate between guessing two numbers, so I tried to increase the reward if it got a correct solve. After those changes and a few other experiments, I was still unable to get it to train properly and seems to still perform poorly with the new fitness function after 1000 generations of training. The graph below shows the fitness of the best model per generation, and you can see quick initial improvement before it stagnates for the rest of the training time. I am considering changing the output from being a number between 1 and 1000 to being a number within the high/low range, where 0 represents the current low and 1 represents the current high, and hopefully after training it would learn to guess around 0.5 each time. Another strategy I could implement would be to give the network more information, such as guesses from even more rounds, round number, or width of the search interval and maybe increase the number of hidden layers and/or neurons in those hidden layers.

0
0
12
Open comments for this post

3h 53m 55s logged

I am trying to make an evolutionary neural network which plays a number guessing game where it has to try and guess a random number between 1 and 1000 in as little attempts as possible, and I am hoping that it will learn binary search from scratch, which would be cool. The first version that I made had a very low solve rate as I hadn’t done the fitness function very well, but this version I have changed the fitness function and a 50 generation quick run was showing good results, so I am going to run it with 10000 generations and then go to sleep, and hopefully when I wake up it will be done fingers crossed. Let me know if you have any other interesting number games/number related things I could try and train it to do, any ideas are welcome!

0
0
18
Ship

I made a custom new tab page that fetches a random nature image from unsplash using their api and it also shows weather information in the background using the open meteo api. You can also search on multiple sources using slash commands as outlined in the README. It was hard to get the slash commands to work and for the icons to switch as the user typed, but after some googling I figured it out. I’m proud of the clean way that the icon switches as the user types in a different slash command and love how it immediately searches on that website. I struggled to get the API key working on the GitHub pages but realised I was still using the nasa api key in the deploy.yml file.

Try project → See source code →
Open comments for this post

2h 56m 57s logged

I first followed the guide to create the nasa daily astronomy site but I didn’t do the part for CSS as I knew I wanted to take the site in a completely different direction. I wanted to make a custom new tab page like the chrome extensions I used to use in primary school so I first added a basic searcher that can search on google. I then added slash commands that let you search on YouTube, duckduckgo, GitHub, and chatgpt and made it so the icon updates alongside it. I also added unsplash images for the background using the Unsplash image api. I then added a weather widget by first getting the user’s location and then using the free open-meteo api to get the weather at that location. I wanted to show an icon for the weather but the API, to my knowledge, doesn’t support return images but instead returns weather codes that correspond to the descriptions, like partly cloudy, and the icons that you normally see on weather apps, so I got chatgpt to code an array that maps the weather codes to the description and icon. I then added hints for the slash commands below the searchbar.

0
0
3
Open comments for this post

1h 48m logged

I managed to set up autorouting and got it to route all of the components except for 9 of the connections, so I did those manually. I then added 3D footprints to all of the components so I could render the nice 3D model you can see below. After that I began working on the 3D model for the case, however after making the base of it and extruding the walls up, I made the plate using the plate generator website, but once I imported it I wasn’t sure how to do the extrusion step they do in the tutorial on it, let me know if you know how to do that.

0
0
4
Open comments for this post

1h 3m 46s logged

I made the PCB layout and I now have to do the routing between all of the components, but I am going to try and install an autorouting plugin to do that for me.

0
0
3
Open comments for this post

2h 15m logged

Made the schematic for my 3x4 button macropad and added led’s to go under the switches as well as a rotary encoder. I was planning on doing a 4x4 macropad with oled and rotary encoder but the MCU doesn’t have enough pins for that so I decided to go with 3x4 + rotary encoder + LEDs. I also assigned the footprints for the PCB but I haven’t started laying out the PCB yet. I am not sure where to place the diodes or LED’s so if you know please let me know in the comments (I want one LED under each switch and need the diodes for the matrix layout).

0
0
1
Open comments for this post

1h 30m logged

Made the pcb in kicad for the tutorial 3 key macropad and also made the case in fusion 360, but I must have done one of the dimensions wrong as the cutout doesn’t line up with the case size, so I will have to restart that next time I work on it. I am also planning on making a 3x3 or 4x4 macropad but I want to do the tutorial first to get a feel for working in kicad and fusion before I do a more complex version.

0
0
1
Open comments for this post

38m 30s logged

I switched to using my own url shortener as the other api’s weren’t working with slack (so my ship got rejected, should be fixed now), it kept on timing out on the response so it would just send an error message. I used the url shortening from my other projecting and just wrote a small bit of code to have an api for short url creation. I then set it up with nest again and it took forever to get the Nest server working as for some reason the internet connection on the nest would just randomly stop working so the bot wouldn’t work either.

0
0
6
Loading more…

Followers

Loading…