[{"data":1,"prerenderedAt":393},["ShallowReactive",2],{"project-19738838":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":45,"post_text":47,"what":48,"said":80,"maker_in_thread":185,"shape":188,"grid":193,"attempts":353,"same_week":354,"maker_shows":44,"maker_hidden":385,"reader_version":386,"card":387},"19738838","layer","Applying the Unix philosophy to neural networks","title","Show HN: Applying the Unix philosophy to neural networks","https:\u002F\u002Fgithub.com\u002Fcloudkj\u002Flayer","github.com","cloudkj",1556117172,2019,251,64,136,2195,7,"legend","ai","neural network inference tool","cli",[24,25,26,27,28],"neural network","unix pipes","inference","command line","scheme","debated",0.087,{"positive":32,"neutral":33,"mixed":34,"critical":35},11,12,1,9,33,{"performance":38,"idea":40,"execution":43},{"positive":34,"critical":39},2,{"positive":41,"critical":42},5,4,{"positive":34,"critical":44},3,[34,44,34,46,44,44,44,46,46,44,44,34,46,41,41,41,34,46,46,41,46,46,46,46,44,46,41,41,41,34,46,46,41,34,46,44,34,34,46,41],0,null,{"problem":49,"audience":47,"pricing":47,"motivation":57,"time_to_build":47,"stack":64,"openness":79,"stage":79,"team_size":79},{"value":50,"source":51,"evidence":52},"Chaining neural network layers as Unix-style pipelines","commenter",[53],{"id":54,"by":55,"text":56},"19741393","peter_d_sherman","Excerpt: \"layer is a program for doing neural network inference the Unix way. Many modern neural network operations can be represented as sequential, unidirectional streams of…",{"value":58,"source":59,"evidence":60},"Idea of chaining network layers on the command line; maker also wanted to port earlier Clojure work","maker",[61],{"id":62,"by":11,"text":63},"19741274","Author here; thanks for the feedback. The path to Scheme was a bit haphazard - I got into Clojure a few years ago after exposure to some nice Clojure-based tools at work, and…",[65,69],{"value":66,"source":59,"evidence":67},"Scheme (CHICKEN)",[68],{"id":62,"by":11,"text":63},{"value":70,"source":51,"evidence":71},"BLAS",[72,76],{"id":73,"by":74,"text":75},"19744050","mark_l_watson","note that this uses BLAS that is largely implemented in FORTRAN",{"id":77,"by":74,"text":78},"19744046","Wonderful idea and the Chicken Scheme implementation looks nice also. I wrote some Racket Scheme code that reads Keras trained models and does inferencing but this is much…","unknown",{"praise":81,"objections":117,"requests":150,"questions":165,"alternatives":170},[82,98,105],{"value":83,"source":51,"evidence":84},"Unix pipeline idea is elegant and fun to explore",[85,86,90,94],{"id":54,"by":55,"text":56},{"id":87,"by":88,"text":89},"19740506","mempko","What's wonderful about this concept (and unix concept in general) is that the flexibility it gives you is amazing. You can for example pipe it over the network and distribute the…",{"id":91,"by":92,"text":93},"19741858","craftinator","I've been thinking about something like this for a long time, but could never quite wrap my head around a good way to do it (especially since I kept getting stuck on making it…",{"id":95,"by":96,"text":97},"19740418","skvj","Great concept. Would like to see more of this idea applied to neural network processing and configuration in general (which in my experience can sometimes be a tedious,…",{"value":99,"source":51,"evidence":100},"Good for learning how neural networks work",[101],{"id":102,"by":103,"text":104},"19742369","xrd","This might not be a great way to build neural networks (as other commenters have said regarding performance). But, it could be a great way to learn about neural networks. I…",{"value":106,"source":51,"evidence":107},"Scheme implementation is interesting",[108,109,113],{"id":77,"by":74,"text":78},{"id":110,"by":111,"text":112},"19739935","seisvelas","Ironically, I was only mildly interested in this before I read your comment and learned that it's in Scheme. Now I'm eager to check it out, haha.",{"id":114,"by":115,"text":116},"19741148","rectangletangle","This, I'm primarily into Python, but the fact this is written in LISP makes it interesting alone.",[118,133,144],{"value":119,"source":51,"evidence":120},"Only inference, no training or backpropagation",[121,125,129],{"id":122,"by":123,"text":124},"19742815","luminati","Great idea but however equally great caveat - it's just for (forward) inference. Unix pipelines are fundamentally one way and this approach won't work for back propagation.",{"id":126,"by":127,"text":128},"19741560","kwaugh","> Now, that being said, there is one minor question I have, and that is, how would backpropagation apply to this apparently one-way model? The author mentioned that this is only…",{"id":130,"by":131,"text":132},"19742012","PeterisP","This kind of misses the point of the Unix philosophy of being able to dynamically reconfigure things - realistically, to get decent results, you'll need to do inference with the…",{"value":134,"source":51,"evidence":135},"Likely poor performance due to serializing data as text",[136,140],{"id":137,"by":138,"text":139},"19740681","HALtheWise","I don't see any claims about performance, but I would be very surprised if it was anything better than abysmal. In a modern neural network pipeline, just sending data to the CPU…",{"id":141,"by":142,"text":143},"19742644","bitwize","Because all the time spent marshalling and unmarshalling data structures into bags of textual bytes takes up CPU and does nothing but hasten the heat death of the universe. We…",{"value":145,"source":51,"evidence":146},"Layers are tightly coupled and cannot be swapped freely",[147],{"id":148,"by":131,"text":149},"19746586","My point was that this is not possible as the trained layers are intrinsically tightly coupled. You can't combine pre-trained sub networks in arbitrary manner without retraining.…",[151,158],{"value":152,"source":51,"evidence":153},"Support for backpropagation",[154],{"id":155,"by":156,"text":157},"19744512","bigred100","I don’t see any reason you couldn’t just spit out the output and the derivative of the layer output with respect to the weights, then multiply and carry these all the way down.…",{"value":159,"source":51,"evidence":160},"Higher-level composition of pre-trained sub-networks",[161],{"id":162,"by":163,"text":164},"19743383","iandanforth","I think that there is room for this idea at a higher level of abstraction where pre-trained sub networks are exposed as command line utilities. cat tweets.txt | layer…",[166],{"value":167,"source":51,"evidence":168},"How would backpropagation work in a one-way pipeline",[169],{"id":54,"by":55,"text":56},[171,178],{"value":172,"source":51,"evidence":173},"Clojure-based pipeline tools",[174],{"id":175,"by":176,"text":177},"19744074","lincpa","Clojure is ideal for Unix-style pipeline programming. Few people will use the command line for neural network inference, I think it would be better to use clojure to implement.…",{"value":179,"source":51,"evidence":180},"Neural module networks from Berkeley",[181],{"id":182,"by":183,"text":184},"19740377","Donald","See also Trevor Darrell's group's work on neural module networks: https:\u002F\u002Fbair.berkeley.edu\u002Fblog\u002F2017\u002F06\u002F20\u002Flearning-to-reason-with-neural-module-networks\u002F",{"comments":34,"answered":34,"key":186},[187],{"id":62,"text":63},{"commenters":189,"max_depth":190,"maker_replies":34,"first_comment_mins":191,"lifespan_hours":192},47,6,67,28,[194,196,200,204,207,210,214,218,220,222,225,228,231,234,236,239,240,242,244,245,247,249,251,252,253,254,255,256,259,262,265,267,269,273,275,278,280,282,285,287,291,293,295,297,298,300,303,306,310,312,315,318,321,324,327,330,332,333,335,338,341,343,345,348],[137,46,34,195,138,46],"project\u002Fcritical\u002Fperformance",[197,46,46,198,199,46],"19740750","commenter\u002Fneutral\u002Fnone","dllthomas",[201,46,44,202,203,46],"19741132","project\u002Fneutral\u002Fperformance","enriquto",[205,46,34,195,206,46],"19741378","bollu",[208,46,46,198,209,46],"19741887","tntn",[211,46,46,212,213,46],"19742104","other\u002Fneutral\u002Fnone","jasonhansel",[215,46,44,216,217,46],"19742149","project\u002Fneutral\u002Fidea","ken",[219,46,46,198,156,46],"19741403",[73,46,44,221,74,46],"project\u002Fneutral\u002Fexecution",[223,46,44,202,224,46],"19741796","jmmcd",[226,46,44,202,227,46],"19743826","nsilvestri",[229,46,46,212,230,46],"19744182","magpi3",[232,46,46,212,233,46],"19744539","AnIdiotOnTheNet",[235,46,46,212,230,46],"19745911",[237,46,46,212,238,46],"19746127","madacoo",[54,34,44,216,55,46],[126,34,44,241,127,46],"project\u002Fneutral\u002Fnone",[130,34,34,243,131,46],"project\u002Fcritical\u002Fidea",[162,34,44,216,163,46],[148,34,46,246,131,46],"commenter\u002Fneutral\u002Fidea",[248,34,46,198,163,46],"19751142",[87,39,41,250,88,46],"project\u002Fpositive\u002Fidea",[95,44,41,250,96,46],[91,42,41,250,92,46],[102,41,41,250,103,46],[122,190,34,243,123,46],[155,190,44,216,156,46],[257,18,46,212,258,46],"19739650","Rerarom",[260,18,46,212,261,46],"19739873","fouc",[263,18,46,212,264,46],"19740130","snazz",[182,266,44,216,183,46],8,[77,35,41,268,74,46],"project\u002Fpositive\u002Fperformance",[270,271,46,212,272,46],"19741112",10,"dekhn",[274,271,46,212,142,46],"19741215",[276,271,46,212,277,46],"19741877","toxik",[279,271,46,212,272,46],"19742891",[281,271,46,212,272,46],"19742887",[283,271,46,212,284,46],"19743765","dTal",[286,271,46,212,284,46],"19743750",[288,32,44,289,290,46],"19739644","project\u002Fmixed\u002Fidea","cr0sh",[292,32,46,198,199,46],"19739816",[294,32,46,212,290,46],"19749858",[110,32,41,296,111,46],"project\u002Fpositive\u002Fnone",[114,32,41,296,115,46],[299,32,41,296,142,46],"19741228",[301,32,41,250,302,46],"19739966","formalsystem",[304,32,46,212,305,46],"19740012","F-0X",[307,32,34,308,309,46],"19740201","project\u002Fcritical\u002Fexecution","Stevvo",[311,32,46,198,305,46],"19741066",[313,32,46,198,314,46],"19741483","elcomet",[316,32,46,198,317,46],"19742495","epr",[319,32,41,320,284,46],"19743832","project\u002Fpositive\u002Fexecution",[322,32,34,308,323,46],"19741115","madhadron",[325,32,34,308,326,46],"19741893","microtherion",[328,32,46,329,323,46],"19749204","commenter\u002Fcritical\u002Fnone",[62,32,46,331,11,34],"maker\u002Fneutral\u002Fnone",[175,32,44,216,176,46],[334,32,44,331,217,46],"19742192",[336,33,34,243,337,46],"19740922","andbberger",[339,33,34,243,340,46],"19741017","jawilson2",[342,33,46,246,305,46],"19741108",[141,33,46,344,142,46],"commenter\u002Fcritical\u002Fidea",[346,33,46,344,347,46],"19742254","ganzuul",[349,350,41,351,352,46],"19741585",13,"maker\u002Fpositive\u002Fnone","nihil75",[],[355,360,365,370,375,380],{"id":356,"name":357,"points":358,"category":359},"19704418","Causal (buy-to-rent model)",353,"finance_crypto",{"id":361,"name":362,"points":363,"category":364},"19705440","Darwin Mail",218,"productivity",{"id":366,"name":367,"points":368,"category":369},"19705511","Mockit",158,"dev_tools",{"id":371,"name":372,"points":373,"category":374},"19707660","Tetris",135,"games",{"id":376,"name":377,"points":378,"category":379},"19694578","hncynic",114,"creative",{"id":381,"name":382,"points":383,"category":384},"19712617","BepuPhysics",108,"languages",false,"v2",{"id":388,"name":5,"line":6,"ai":385,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":389,"top":18,"kw":390,"maker":11,"domain":10,"tier":19,"attempts":46,"strip":391,"url":9,"mix":392,"praise":83,"objection":119,"sub":21},19738838,0.09,[24,25,26,27,28],"1310333003310555100500003055510051031105",[32,33,34,35],1794036576975]