One nice thing about Lite is that it's a lot easier to just include the operations you need (compared to TensorFlow 'classic'), there's fusion for common patterns, and the base interpreter is only 70KB. That covers a lot of the advantages of using XLA for mobile apps. In return you have the ability to load models separately from the code, and the ops are hand-optimized for ARM.
I'm still a fan of XLA, and I expect the two will grow closer over time, but I think Lite is better for a lot of scenarios on mobile.
I'm the original author of the freeze_graph script, so I'm to blame for a lot of the on-going mess here. For what it's worth I'm actively working on cleaning this up, since I know what a painful experience it is. Apologies for everyone who's struggled with this, and I will take a look at the case number mentioned above and follow up internally to see if there's anything I can help with.
One thing to note is that this isn't available on production phones yet, because we need a signed driver to run within Android. You should be able to run this on a Dragonboard 820 development board though, using the instructions in the README.
This is all very new though, so apologies in advance for any hiccups getting up and running. My email's petewarden at google.com if you are trying this and hit problems.
Yes, that was my screwup, sorry for any confusion! Despite multiple linear algebra courses, working in 3D graphics for a decade, I haven't internalized the basics of matrix notation. It doesn't help that my usual sandbox (Eigen) is column major by default, which is the wrong in-memory order for my raster-image trained brain to visualize.
Funnily enough, I find tensor notation a bit easier, despite being less familiar.
I found college completely crushing, especially because I'd built up wild hopes for it as an escape from my unhappy childhood. I don't have any easy answers, but here's some of the tools that helped me:
- Exercise. I know, it sounds dumb, especially when you're depressed and have no energy, but it's an incredibly effective way of hacking your brain chemistry. Run, swim, bike, hike, just pick one and pour all your frustration, anger, and sadness into it.
- Get a hobby. I spent a lot of time worrying about being interesting to others, which guaranteed I wouldn't be. Being interesting is a many-body problem with lots of unknowns, but being interested is way more solvable. You can figure out what you like a lot more easily than you can guess what might make other people like you. Don't rule something out because it seems dorky, I guarantee you'll find other people who enjoy it too, even if it's Lego or collecting old maps. It's surprisingly hard to understand what you actually want though, especially if you've been focused on what other people think.
- Beware of magical transformations. I got married at 19, driven by an overwhelming desire to completely change my life to find happiness. It didn't work. I also took a lot of drugs. That didn't work either. I saw people get pulled into cult-like religions or extreme political groups. Drastic exterior changes don't alter who you are, you'll still have the same problems, no matter what anyone tells you. Focus on boring incremental improvements, like exercise and hobbies. I hated that idea, because I was in love with my life being dramatic and the basic stuff seemed so mundane, but it's what ended up making a lasting difference.
I doubt I'd have even listened to my present-day self when I was 19, but I hope there's something in there that helps you. Life really does get better.
I went through Techstars in 2010 as their first solo founder, and I failed pretty hard. The combination of talks, mentor sessions, wooing potential team members, and pitch practice left me almost no time to code and plan the product. For the final pitch, all I had was demo ware, and I felt an idiot getting up on stage.
It was a worthwhile failure for me, I made some great friends and learned a lot, but I'd counsel any lone founder to focus on growing some kind of support team around them as the first priority. I would never contemplate an accelerator as a solo founder, but I have nothing but admiration for those who have managed it.
I look through the 'new' page archives every few days, and reblog interesting posts. They're usually so old that upvotes wouldn't matter, but the signal-to-noise ratio for submissions is high enough that I can usually find some neglected gems.
I've wrestled with this pattern (anti-pattern?) myself. One key advantage is that I can run plain Ruby unit tests outside of Rails, as long as I make sure the right environment variables are set in my shell.
I'm conflicted about it though; I hate being out of the mainstream on something as fundamental for maintenance as this and I have to jump through hoops to get Apache to set my environment variables.
Bandwidth and general cumbersomeness of dealing with larger amounts of data with starving-startup resources. I actually spent about a decade of my career focused on image processing, and while I love it's power, I knew how much of an engineering challenge it can be at massive scale. I need to do a blog post about this, since I know my choice is a bit surprising and needs explanation.
I've added a post-script to this story, updating with developments over the last year:
http://petewarden.typepad.com/searchbrowser/2011/03/facebook...
In particular, I know from my friends in the academic community that they're quietly putting together processes for working with researchers. That's a big step forward in my view, as long as they can safeguard privacy, there's a lot of potential for world-improving research.
I'm actually overjoyed to be living in a world where companies like Rackspace and Amazon are possible, it still blows my mind that I can rent a hundred machine cluster for $10 an hour.
I wrote up the article at the end of a long and frustrating day, and looking back on it, the tone's all wrong. I still stand by the content, but it needs way more context and the equivalent of smileys surrounding it.
I'm happy to refund the purchase price out of my own pocket to anyone who's not happy with what they're getting. So far, plenty of sales and no takers, but I'm [email protected] if anyone does want to get in touch.
I've just confirmed the nofollow behavior with Rich at Blekko. Sorry, it does make the results a lot less useful as a guide to what Google's taking into account (along with all the other disclaimers!). I'll be updating the blog post to reflect this.
Flagging is a pretty drastic response to a post you disagree with. Andrew's article was certainly pretty blistering, but he had an argument backed up with evidence.
Saying a post is misleading but offering nothing to back that up is unhelpful to say the least. There was an active and civil comments thread that seems like the perfect venue to have a more enlightening discussion.
I'm still frustrated that WikiLeaks sent out a call for programming help months ago, lots of HN folks emailed offering to volunteer, and nobody even received an email reply:
I'm mostly on-board with this. I hate "7 Ways to X", and titles like "Is styrofoam going to kill us all?" that have the obvious answer of "No". I actually enjoy titles that are clever and provocative though, ones that provoke a smile or make me curious, as long as the article delivers.
Maybe part of this is cultural. I find the over-the-top sobriety of US newspaper headlines unintentionally funny, I much prefer something more in the tabloid style with a little zing.
I'm all for weeding out dumb articles, but let's not go on a puritanical crusade against every title that isn't anodyne and boring.
> I found that spending a lot of time reading other people's code dramatically improved the readability of my own code.
This I wholeheartedly agree with. I spent the first five years of my career porting large hairy codebases from PCs to embedded devices, without the original programmers available, and that has given me a drastically different code style to a lot of people.
> I venture to guess that his code is a little opaque in places without meaning to be, as a result of his not spending much time reading other people's code.
Here you lose me. I went out of my way to avoid memorizing the operator precedence rules too well, so that when I saw a complex one-line expression I'd have to stop and pay attention. A lot of the time the subtle bugs creep in because the naked expressions flow in a way that looks seductively correct, and so with an easy knowledge of precedence it's easy to make the same mistake as the original author.
As Bjarne S once said about casting in C++, I want it to look ugly in the code because it's an ugly idea. I want my code-reading to stumble when I hit those long unparenthesized expressions, to make sure I pay attention.
Email me via [email protected]