Hacker Newsnew | past | comments | ask | show | jobs | submit | strikingloo's commentslogin

Today I learned. Thanks!


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.

Thanks for all the feedback!


same problem, haven't found a solution. Please let me know if you do


Okay for what is worth, I was getting that as a warning but the ./chat executable works anyway. So give it a try if it is being compiled!


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}


Oh, I had used a program that used the DOT syntax without knowing that was its name. GraphViz was its name I think, but I may be wrong.

Thank you!


After this, Guzey went on to work on the NGO [New Science](https://newscience.org/)


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.


Can you recommend a list of languages to start with first?


Hey everyone, I'd love it if you guys told me whether this article was useful to you, and what I should've added for it to be worth reading.

Thanks!


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.

Have a nice weekend!


1. Ok, makes sense, however this is something to keep in mind when we try to gain understanding of how NNs work. In this case, the actual features which excite the filters the most might be even more "texture-like" than what you produced. This could be important, if, say, we wanted to argue that NNs pay more attention to textures than to shapes.

2. Let me try to explain this better. If we want to optimize the inputs to the first layer, these inputs are actual RGB images. So what you're doing in line 35 is correct:

  input_img_data = np.random.random((1, 3, intermediate_dim[0], intermediate_dim[1])) 
but in the next layer, the inputs have more channels than 3. So you should be optimizing images of the shape the layer expects (replacing 3 with the number of channels of that layer). If you do it like that, then the image you want to visualize - the image that excites the outputs of an intermediate layer the most - will have more channels than 3, and therefore it's not clear whether we should pick arbitrary triplets of channels to use as RGB channels, or if we should visualize each channel (each input feature map) individually, in which case it would have no color.

I guess my question should be: when you show optimized inputs to the second or third VGG layers where does the color information comes from? Also, you probably shouldn't call them "filters", because the filters in this context are the actual convolutional layer weight kernels, and are 3x3 in size (each filter).


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.


Oh interesting. Then I have more questions :)

1. If you try to optimize an image that would maximize all layers outputs, how would it look like?

2. After you optimized an image to maximize some layer outputs, how do those outputs look like?

3. If you try to do what I thought you were doing - optimizing not the RGB image, but the individual layer inputs (feature maps), how would those feature maps look like? You could either plot each individual feature map, or pick top 3 with the strongest signals and combine them as RGB channels.


Hi! I'm the writer.

I figured git deserved an article on its own, rather than mentioning it in passing in a bash article.

About cp and rm, I actually wrote about more basic commands in the previous article, also linked there: http://www.datastuff.tech/programming/terminal-tutorial-more...

Though seeing your comment makes me think I could just combine both articles into a longer one.

Thanks for the feedback!


Hi, I had a quick look at the post and it didn't seem that it was part of a canonical series of posts. That may room for improvement on the website design.


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.


I must admit I really only had a cursory glance. I didn't want to read the article as I already know how to use the basic commands. It's entirely possible I'm just a dummy and didn't see an obvious link. I wouldn't take my feedback too seriously, unless you receive the same feedback from others too.

I meant more that it would be nice if the website design itself clearly indicated the presence of other related posts. This is about post metadata which shouldn't be communicated solely in the post itself but also in the way that post is presented.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: