Share your V2 projects here

Hello all. I finally managed to complete my first image classifier and get a webapp out of it using voila and binder.

However, I found the project particularly frustrating. I wrote my thoughts in this blogpost.

Hopefully some people can relate. What advice do people have for dealing with frustrations / difficulties that arise? What kind of things frustrate you? I’d be interested to know. Thanks all!

2 Likes

Totally identified with your final remarks on the blog.

Thanks for alerting me to broken binder link! It should work now (issue is I tried to have multiple projects in one github repo. So I have reorganised things now).

I tried your web-app on binder and it worked. Here it the link that worked for me:

Super cool, love the idea

I made a simple web app with fastai v2 and Binder that classifies centipedes and millipedes.

Binder website:

Medium blog:

2 Likes

Because you’re using filepath instead of urlpath as per the instructions.

Also in future if you’re having problems and you don’t find the answer using the forum search, please start a new topic for your problem, don’t add to a topic about something else. It makes the forum disorganised.

Regarding your link not lasting, make sure you are using the link it gives you on the binder start page (/v2/gh/etc), not the one it eventually goes to.

4 Likes

Ok @joedockrill Thanks for the information, I apologize for the inconvenient

I took Beatles sheet music, encoded it into a homemade JSON encoding, took Beatles lyrics, trained two neural nets, combined them, and used some Javascript to generate sheet music that has midi accompaniment - check it out here!

3 Likes

This doesn’t particularly belong more in part 1 or part 2, but I thought it might be helpful for people who are just starting out.

@jeremy @muellerzr and anyone else who teaches may find this useful as a visual aid.

Andrew Trask has an old article called A neural network in 11 lines of Python which I thought was rather cute, so I knocked up a little runnable demo of the 2 layer part of the article which allows you to step through epoch by epoch and watch it calculate preds->error->delta->new weights.

It’s an old article using a sigmoid activation but if you play with the demo while reading the article, that actually makes it easier to visualise what’s happening and how it updates more/less when it’s more/less certain based on the predictions’ positions on the curve.

https://joedockrill.herokuapp.com/voila/render/NeuralNetDemo.ipynb

4 Likes

Thanks for your in-depth blog post as I’m on the same journey just a couple of days behind you and also experienced almost the same things you did.
However, I’m wondering about the whole voila and binder thing. As you stated its not very clear as it seems you can do everything within the jupyter notebook and simply change the url to voila/render and it should work, but then Jeremy is showing a local version of jupyter.

Is there a way to use colab\paperspace to have the similar results or you need to export it to your local workstation?

It needs to be in github

One thing that’s really helpful is that if you find documentation that doesn’t explain what you need to know, or find something doesn’t work the way the docs say it’ll work, is to create an issue in GitHub Issues for the project that describes the problem, and suggests a solution. (If you have the time and inclination, you can even send in a Pull Request which implements that solution!)

That way, you know that the next folks that come along will have a slightly easier time, thanks to your contribution. :slight_smile:

4 Likes

@joedockrill I noticed that you have voila running on Heroku. I’d love to have docs on how to do that. Would you or anyone else be interested in contributing a PR for that? Here’s an example PR that provides that info for another service, FYI:

1 Like

done

2 Likes

Just for practice/fun, I threw the fastbook into lesson 10 for text generation. Interesting to see what the answers are to

math is
loss functions are important because
the meaning of life is

https://github.com/foobar8675/fastbook_answers/blob/master/fastbook_text_generation.ipynb

2 Likes

Hi everyone!

I made an image classifier for cheetahs, leopards and jaguars. Cheetahs are easily recognizable, but I find it quite hard sometimes to distinguish a leopard from a jaguar!
The model is using a ResNet50 architecture, it reaches 92% accuracy, and I didn’t use any hyperparameter tuning for the moment.
I’ve deployed it on seeme.ai via the API and it was suprisingly simple.

Side note: I wonder if the model uses the background of the images to differentiate jaguars from leopards, since they do not live in the same parts of the world - the background should often be greener and more tropical for jaguars, and drier for leopard pictures. I’ll look into that next!

4 Likes

Based on the visualisations of gradient descent in Lecture 3 (and Lecture 2 of version 3), I have been investigating gradient descent and producing a bunch of visuals of my own. Some of the visuals are funky and emotive and almost lifelike!

  • Part 1. Gradient descent with simple models on simple data
  • Part 2. Gradient descent with neural networks models on simple data
  • Part 3. Stochastic gradient descent.

Though (I think) I understand the theory of gradient descent and of vanilla neural networks, it is evident that the whole is greater than the sum of its parts. I under-estimated what I could have learnt by experimenting.

3 Likes

! I can’t tell the difference between them at all. It would be interesting to find out how the resnet model is learning to distinguish them, and whether it is based on unintended background features.

2 Likes

somebody asked a couple of weeks ago if I could turn my duckduckgo image scraper notebook into an installable library, and i’ve been meaning to play with nbdev anyway (which is awesome btw, thanks to jeremy and sylvain), so that’s what I did.

docs:

now you can:

!pip install -q jmd_imagescraper

from pathlib import Path
root = Path().cwd()/"images"

from jmd_imagescraper.core import *

duckduckgo_search(root, "Teddy", "teddy bears", max_results=100)
duckduckgo_search(root, "Black", "black bears", max_results=100)
duckduckgo_search(root, "Brown", "brown bears", max_results=100)

and also:

from jmd_imagescraper.imagecleaner import *
display_image_cleaner(root)

those of you having issues with bing keys and trials etc can drop this into your notebook instead.

19 Likes