I like GA4, but never got around to removing google-analytics.com/analytics.js. You mean GA4 doesn't need that now to function and I've been loading it for nothing all this time? I'll look into removing that one.
And normally I set all images to loading='lazy', I just realized from your comment that for this post I hadn't. Great catch, and fixed it already.
Update. Even though I didn't use the DOT syntax exactly, I added some syntactic improvements so that expressinga more complex dependency graph is easier.
Now it allows for edges specified as
{1,2,3} {4,5,6} (skills 4, 5 and 6 all depend on 1, 2 and 3), and the levels now can be expressed as
1 {skill 1, skill 2, skill 3}
Hi!
If you want to learn programming, I'd recommend FreeCodeCamp, to learn the basics of Web Development. I found their course pretty great many years ago when I was getting started.
I hope you find it useful! Let me know if there's any other help I can give you.
1_ I hadn't thought of that. To be honest, my main concern was generating the most aesthetically interesting pictures I could. However the "textures" you'd get from optimiing for the last layers would really be just repeating shapes, albeit maybe a bit smaller than you're seeing in my post. Kinda like zooming out.
2_ Oh ok, I get it now. But that's not what the program is doing. I don't generate a vector for the single layer I am maximizing, I generate an image and run the whole CNN from input to that layer, all through. Then I optimize for that layer's output.
Edit to add: As stated in the post, when I "maximize for a filter", the exact function I am maximizing is the average output for that filter over the whole image.
Hi, those are really good questions! I'll do my best.
1_ I started with a small one and then kept rescaling because the literature said convergence was faster and the results were "better" that way, but to be honest I didn't even try starting from a big image. I just kinda took their word for it.
For a (not too academic, but very well put) example, see this:
https://towardsdatascience.com/how-to-visualize-convolutiona...
If you start with a big image, you get whatever "shape" the filter is generating, many times, but kind of small. If you start with a small image and keep rescaling, you get less of the shapes, each of them bigger.
That makes for subjectively cooler visuals, and that's pretty much it.
2_ I'm not entirely sure I get this one. Don't the filters apply to the three (RGB) channels simultaneously? Or do you mean a filter actually refers to the transformation for a single channel rather than the one to a whole pixel?
Other than that, with regards to the ease of visualization, it's actually kind of hard to display all of the filters in a visually interesting way that isn't just "Here's the 240 filter images I made with this layer", so I had to make a trade-off between 'here are some of the cooler images' and 'I want each layer I tried to be represented in this'.
I'm still sort of new to presenting visual information of this kind, so if you have any advice on how to display more of the images, I'm all ears.
Hi! I made the paragraph mentioning my previous article more prominent, do you think it's clearer now?
Thanks for the feedback, this is one of the reasons why I like sharing my articles on HN.
Hey guys, I'm the writer. As you can see from the post, I'm still very much learning.
What I want the most from this site is for more experienced people to help me out with some of my questions.
Here they come:
- Can you use Batch Normalization (the one from tf.keras) on an LSTM layer? Or will it break the model?
- How do you deal with extremely infrequent words if you do a word-based LSTM (with a one-hot encode of each word in the corpus?)? Do you remove them? Replace them? Cluster them?
- Do you think there's any other architecture that would've had better results -while still not taking too long to train-?