Excellent tutorial! Despite many years of Maxing, I have to say my brain is a little fried after this - but you made it make sense, along with the article. Thanks so much, gonna rest and continue onto the next part :D
Great job, very informative, thank you. About not using the value object, if you give it a #0name then it can only correspond to a unique #0name instance because #0 becomes a unique number every time a patch loads, thus working only internally.
Giorgos Mizithras Thanks :) i'd come across that technique before, but wanted to show pvar partly because it requires using a linked number box, which solves the problem of having to check the weights manually.
Nicely explained, thanks. You connected the number box to the Carry instead of to the Current count output in that last bit. And I think you could replace the structure on the right with the [t b f], [f] and [- 0.] with a [!- 0.]
Cheers, yeah I realised my mistake after recording the video, and since UA-cam stopped letting you put annotations on videos I could only mention it in the description. Thanks for pointing out the use of [!-], in my next tutorial I'll be tidying everything up and using expr objects for the sigmoid function etc for elegance :) Should be uploaded by the weekend.
Hey Sam, thanks for this tutorial - This is incredibly helpful! I was wondering if you had specific reasons to separate all arithmetic operators as objects as opposed to combining them using [expr], which would let you specify each formula from the article much more explicitly. Or for instance, using [zl.sum] to add the weighted inputs. Anyhow, I'm about to move on to the next part! Thanks again for your work!
Hi Felipe, thanks for the comment - glad you're enjoying the videos. For this initial video I was trying to keep the complexity pretty minimal, just to show the arithmetic step-by-step. In the next video you'll see an implementation of expr as you mentioned :)
thanks Samuel for your tutorials!. helped me to understand some things during my own research. they're very clear and helpful. btw... what Blizzard games do you play?
You're welcome man, glad I could be of help! Haha, I wondered if anyone would pick up on that. Currently just WoW in my spare time, nothing particularly serious.
Excellent video! I've been using max for years and I learned two new objects from watching. Would the listfunnel/spray thing be better served with a simple unpack object? It'd simply the following non left to right ordered math. Maybe I'm missing something. Looking forward to part 2.
Thanks for the comment John :) I sent you a quick message after your first comment didn't show up for some reason. In response to the query, yes unpack would work fine in this case, but when we come to abstract the neuron next time I'll explain why the way i've done it here is necessary. For now, you could use a zl.rev object immediately after the matrixctrl, then reverse the connections from the spray outlets, so the first outlet (leftmost) is connected to the rightmost float object. That would preserve right-to-left ordering :)
I thought there must be a reason you did that. I had to delete the first comment - I added max code but youtube formatting broke it. Hope you do a second vid!
so a random story, i moved from Plymouth to Liverpool to go to uni to study audio production, and im in my last 6 months and my for my major project i am doing a small scale neural network to reproduce sounds for sound design and investigate weather or not this is a more efficient then using traditional vst's, is there any way we could have a talk about it? as i have no idea where to start with this machine learning aspect to my project.
Hi Mike. That sounds fascinating, I'd definitely like to hear more about it, so drop me a line at spearced@googlemail.com and I'll get back to you when I have a moment. One thing I will say is that unless you're using pre-existing software, trying to get a neural network up and running that can interact with sound generation processes might be a pretty ambitious project. I'm doing something in the same vein for my PhD!
Thank you for that video. I did the patch in max but I get a different result when I try 1 0 0 query after the learning process is completed. In stead of 1 as you have I have a number around 0.2... Is there any reason as why it would do that? I checked 3 times the patch and it isn't different at all so... Could there be any reason?
Thanks! Yeah, as I put in the description I was being an idiot and got my outlets mixed up xD thanks to some feedback I got on facebook, I've replaced the counters altogether now, putting a couple of uzi objects instead for almost instantaneous calculations. The download link on my website has this new latest version :)
Hi, Samuel. Thanks for your tutorial - inspiring stuff! I will definitely look into your other videos. I do have one remark / question, though. I hope you find them useful OR correct me if I'm wrong. Why not use [uzi]s instead of [counter]s? Max would be happier about it, you wouldn't need an escape strategy and you could avoid the [pipe 1]; maybe you'd need a [deferlow] to ensure things run smooth.
Excellent tutorial! Despite many years of Maxing, I have to say my brain is a little fried after this - but you made it make sense, along with the article. Thanks so much, gonna rest and continue onto the next part :D
Jesus Sam!!! I sat through the whole thing and now my brain is officially fried!!! thanks!!!
Hedi Hurban Happy to help! ;)
This is really great! Very practical, quickly paced, and great examples. Thank you for doing this!
this is gold
Thank you very much! More to come :)
Great job, very informative, thank you. About not using the value object, if you give it a #0name then it can only correspond to a unique #0name instance because #0 becomes a unique number every time a patch loads, thus working only internally.
Giorgos Mizithras Thanks :) i'd come across that technique before, but wanted to show pvar partly because it requires using a linked number box, which solves the problem of having to check the weights manually.
Nicely explained, thanks.
You connected the number box to the Carry instead of to the Current count output in that last bit. And I think you could replace the structure on the right with the [t b f], [f] and [- 0.] with a [!- 0.]
Cheers, yeah I realised my mistake after recording the video, and since UA-cam stopped letting you put annotations on videos I could only mention it in the description. Thanks for pointing out the use of [!-], in my next tutorial I'll be tidying everything up and using expr objects for the sigmoid function etc for elegance :) Should be uploaded by the weekend.
Ooops, didn't read description, you figured out the last bit already :)
Why the [listfunnel] into the [spray] rather than [unpack f f f]?
Good question: see my response to Leafcutter John above :)
i wonder why e is necessary since for any positive integer>1 n ~~~~~ 1/(1+n^‑x) will always approach 0 and 1
??
Beats Away From what I gather from the article, it's to get the s-shaped curve which gives us the gradient needed for weight adjustment.
Thanks! Great work!
Alessandro Miracapillo Thank you :D
Hey Sam, thanks for this tutorial - This is incredibly helpful! I was wondering if you had specific reasons to separate all arithmetic operators as objects as opposed to combining them using [expr], which would let you specify each formula from the article much more explicitly. Or for instance, using [zl.sum] to add the weighted inputs. Anyhow, I'm about to move on to the next part! Thanks again for your work!
Hi Felipe, thanks for the comment - glad you're enjoying the videos. For this initial video I was trying to keep the complexity pretty minimal, just to show the arithmetic step-by-step. In the next video you'll see an implementation of expr as you mentioned :)
great lesson
Big fun - Thanks (mine didn't work so I'll have to figure it out before the next lesson.)
brilliant nice one
thanks Samuel for your tutorials!. helped me to understand some things during my own research. they're very clear and helpful. btw... what Blizzard games do you play?
You're welcome man, glad I could be of help!
Haha, I wondered if anyone would pick up on that. Currently just WoW in my spare time, nothing particularly serious.
Excellent video! I've been using max for years and I learned two new objects from watching. Would the listfunnel/spray thing be better served with a simple unpack object? It'd simply the following non left to right ordered math. Maybe I'm missing something. Looking forward to part 2.
Thanks for the comment John :) I sent you a quick message after your first comment didn't show up for some reason. In response to the query, yes unpack would work fine in this case, but when we come to abstract the neuron next time I'll explain why the way i've done it here is necessary. For now, you could use a zl.rev object immediately after the matrixctrl, then reverse the connections from the spray outlets, so the first outlet (leftmost) is connected to the rightmost float object. That would preserve right-to-left ordering :)
I thought there must be a reason you did that. I had to delete the first comment - I added max code but youtube formatting broke it. Hope you do a second vid!
I certainly will, hoping to have it up by the weekend.
so a random story, i moved from Plymouth to Liverpool to go to uni to study audio production, and im in my last 6 months and my for my major project i am doing a small scale neural network to reproduce sounds for sound design and investigate weather or not this is a more efficient then using traditional vst's, is there any way we could have a talk about it? as i have no idea where to start with this machine learning aspect to my project.
Hi Mike. That sounds fascinating, I'd definitely like to hear more about it, so drop me a line at spearced@googlemail.com and I'll get back to you when I have a moment. One thing I will say is that unless you're using pre-existing software, trying to get a neural network up and running that can interact with sound generation processes might be a pretty ambitious project. I'm doing something in the same vein for my PhD!
Samuel Pearce-Davies yeah I will drop you an email sometime today :)
thank you my yo!
@samuel I'm just wondering what 2.718 stand for?
Patrick Hartono It's the irrational number 'e' to 6 decimal places :) part of the sigmoid function we're using
Thank you for that video. I did the patch in max but I get a different result when I try 1 0 0 query after the learning process is completed. In stead of 1 as you have I have a number around 0.2... Is there any reason as why it would do that? I checked 3 times the patch and it isn't different at all so... Could there be any reason?
I found the problem. I was running Max in 64-bit in stead of 32... It makes a huge difference in the numbers!
Ah, that's interesting! I hadn't considered changing it. Maybe I'll get different results myself with other patches :P
thanks!
You want the leftmost outlet from counter!
Thanks! Yeah, as I put in the description I was being an idiot and got my outlets mixed up xD thanks to some feedback I got on facebook, I've replaced the counters altogether now, putting a couple of uzi objects instead for almost instantaneous calculations. The download link on my website has this new latest version :)
Hi, Samuel. Thanks for your tutorial - inspiring stuff! I will definitely look into your other videos.
I do have one remark / question, though. I hope you find them useful OR correct me if I'm wrong. Why not use [uzi]s instead of [counter]s? Max would be happier about it, you wouldn't need an escape strategy and you could avoid the [pipe 1]; maybe you'd need a [deferlow] to ensure things run smooth.
Damn! I should have looked into the first seconds of your next video before posting! :-)
Haha, it's cool :) Thanks for the comment, I'm hoping to come back to these again at a later date
your video audio mix is too low.