Beginner: Using Colab or Kaggle ✅

Thank you @bencoman.
I already fixed the widget issue, I had to

pip install ipywidgets

and

import widget from ipywidget

and it is now working and interactive.

Thanks so much for your response.

4 Likes

@deelight_del, Thanks for reporting back!!! That will help the next person.

1 Like

Whenever using the fastbook search_images_ddg function in Colab I get the following error:

@LeoJuhlin This error pops up when interacting with a folder as if it’s a file.

I believe you have your results and dest flipped around, it should be something more akin to:

download_images(dest, urls=results.attrgot('contentURL')

You can take a look at this code from chapter 2 of the fastbook as an example (use a ctrl + f search for “download_images” if you wanna find the specific code block):

bear_types = 'grizzly','black','teddy'
path = Path('bears')

if not path.exists():
    path.mkdir()
    for o in bear_types:
        dest = (path/o)
        dest.mkdir(exist_ok=True)
        results = search_images_bing(key, f'{o} bear')
        download_images(dest, urls=results.attrgot('contentUrl'))
1 Like

I’m having trouble with autocomplete suggestion in Kaggle. I’m getting no suggestions, even when I hit tab, for both native Python functions and functions included in packages that I imported. Any advice on how to get autocomplete suggestions in Kaggle?

1 Like

It worked now. Thank you!

hey guys!

started lesson 1 yesterday, however when i copy the notebook “is it a bird?” in kaggle or re-write it from scratch in colab, i get this error when trying to run the fourth cell:

# searching for a batman photo
urls = search_images('batman photos', max_images = 1)
urls[0]

it comes with HTTP Error 403: Forbidden raised.

however, when I change the url of the previous cell from ‘duckduckgo.com’ to ‘google.com’, i got another type of error: HTTP Error 405: Method not allowed.

and when changed from ‘google.com’ to ‘yandex.com’ (russian-based search engine) it throws another error: AttributeError: 'NoneType' object has no attribute 'group'.

is something wrong with my colab environment?

3 Likes

Hey everyone

I too am getting a HTTP Error 403: Forbidden in lesson 1. Appreciate any help on this

/opt/conda/lib/python3.7/site-packages/fastcore/net.py in urlread(url, data, headers, decode, return_json, return_headers, timeout, **kwargs)
    113         with urlopen(url, data=data, headers=headers, timeout=timeout, **kwargs) as u: res,hdrs = u.read(),u.headers
    114     except HTTPError as e:
--> 115         if 400 <= e.code < 500: raise ExceptionsHTTP[e.code](e.url, e.hdrs, e.fp) from None
    116         else: raise
    117 

HTTP403ForbiddenError: HTTP Error 403: Forbidden
4 Likes

@svrmnnk @seiger I’m also getting these issues inside the Kaggle notebook itself, even when running it all vanilla, definitely not an issue with Colab.

Not exactly sure what the issue is, perhaps the notebook needs an update.

Hi Guys, I am seeing the same error and not sure what needs to be done. Can anyone help?

---------------------------------------------------------------------------
HTTP403ForbiddenError                     Traceback (most recent call last)
/tmp/ipykernel_17/2848931847.py in <module>
----> 1 urls = search_images('bird photos', max_images=1)
      2 urls[0]

/tmp/ipykernel_17/116543321.py in search_images(term, max_images)
     10     urls,data = set(),{'next':1}
     11     while len(urls)<max_images and 'next' in data:
---> 12         data = urljson(requestUrl,data=params)
     13         urls.update(L(data['results']).itemgot('image'))
     14         requestUrl = url + data['next']

/opt/conda/lib/python3.7/site-packages/fastcore/net.py in urljson(url, data, timeout)
    123 def urljson(url, data=None, timeout=None):
    124     "Retrieve `url` and decode json"
--> 125     res = urlread(url, data=data, timeout=timeout)
    126     return json.loads(res) if res else {}
    127 

/opt/conda/lib/python3.7/site-packages/fastcore/net.py in urlread(url, data, headers, decode, return_json, return_headers, timeout, **kwargs)
    113         with urlopen(url, data=data, headers=headers, timeout=timeout, **kwargs) as u: res,hdrs = u.read(),u.headers
    114     except HTTPError as e:
--> 115         if 400 <= e.code < 500: raise ExceptionsHTTP[e.code](e.url, e.hdrs, e.fp) from None
    116         else: raise
    117 

HTTP403ForbiddenError: HTTP Error 403: Forbidden

@chsheth @seiger @svrmnnk seems a solution has been found: Lesson 1 official topic - #288 by ltogniolli

1 Like

yeah, i saw it, thank you for mentioning!

Thanks @DylanWu

EDIT: Figured it out
timm has to be imported BEFORE fastbook


When using Colab, or Paperspace I cannot use timm models:

from fastai.vision.all import *
import timm

learn = vision_learner(dls, 'convnext_nano', metrics=accuracy)
learn.fine_tune(5)

gives me

/usr/local/lib/python3.7/dist-packages/fastai/vision/learner.py in create_timm_model(arch, n_out, cut, pretrained, n_in, init, custom_head, concat_pool, pool, lin_ftrs, ps, first_bn, bn_final, lin_first, y_range, **kwargs)
    181                      concat_pool=True, pool=True, lin_ftrs=None, ps=0.5, first_bn=True, bn_final=False, lin_first=False, y_range=None, **kwargs):
    182     "Create custom architecture using `arch`, `n_in` and `n_out` from the `timm` library"
--> 183     model = timm.create_model(arch, pretrained=pretrained, num_classes=0, in_chans=n_in, **kwargs)
    184     body = TimmBody(model, pretrained, None, n_in)
    185     nf = body.model.num_features

NameError: name 'timm' is not defined

I think that is not a correct conclusion.

I was already looking into this for you, so tried your solution, but still get the same error…

import timm
from fastai.vision.all import *
path = untar_data(URLs.MNIST_SAMPLE)
block = DataBlock(
        blocks=(ImageBlock, CategoryBlock),
        get_items=get_image_files,
        get_y=parent_label)
dls = block.dataloaders(path/"train")
#learn = vision_learner(dls, 'resnet18', metrics=accuracy)
learn = vision_learner(dls, 'convnext_nano', metrics=accuracy)
learn.fine_tune(1)

…so perhaps there was some other change you made?

Looking at Line 177 and researching here: https://timm.fast.ai
I found “How to use - Create a model” provides a better Minimum Reproducible Example…

import timm
model = timm.create_model('resnet18')
model = timm.create_model('convnext_nano')

image

Further down the page, “list_models()” looks useful…

import timm
models = timm.list_models()
[ s for s in models if 'convnext' in s ]

[‘convnext_base’,
‘convnext_base_384_in22ft1k’,
‘convnext_base_in22ft1k’,
‘convnext_base_in22k’,
‘convnext_large’,
‘convnext_large_384_in22ft1k’,
‘convnext_large_in22ft1k’,
‘convnext_large_in22k’,
‘convnext_nano_hnf’,
‘convnext_small’,
‘convnext_small_384_in22ft1k’,
‘convnext_small_in22ft1k’,
‘convnext_small_in22k’,
‘convnext_tiny’,
‘convnext_tiny_384_in22ft1k’,
‘convnext_tiny_hnf’,
‘convnext_tiny_hnfd’,
‘convnext_tiny_in22ft1k’,
‘convnext_tiny_in22k’,
‘convnext_xlarge_384_in22ft1k’,
‘convnext_xlarge_in22ft1k’,
‘convnext_xlarge_in22k’]

which simply doesn’t list the model you were trying to use. So maybe its the version of timm installed?
So trying the following worked for me…

!pip install -U timm
import timm
model = timm.create_model('convnext_nano')

There are competitions in kaggle that they do not give training images without folders. Supposedly someone could use panda and match image with its category using image_id and image_category in cvs file that they give. (I do not know how to do it but I will figure this out, nice challenge to get more familiar with panda). However , I like to create subfolders and put those images in their folder so it would be way easier to use fastai and fastkaggle. Does kaggle allow me to do that in kaggle ? The data is 360G so I do not want to download it locally. I have M1 Mac. It does not have GPU.I am also not sure I could do this in paperspace. Any idea to create subfolders in train folder in kaggle? does kaggle has terminal we could manipulate data set. (Create subfolders and put each images to their subfolders)

@bahman_apl : Kaggle input folder is read-only, so you cannot just create folders and move images in place. You could copy in the working directory, but likely room is not sufficient. In general, you may execute shell commands in a notebook cell by prefixing them with ! .
However, since you refer to the Strip AI challenge, consider that they are extremely large digital slides that need tiling, possibly downsizing, etc.

1 Like

I can’t seem to get the ‘H’ hotkey to work in command mode in Kaggle.

To see a complete list of all of the functions available, press H

Any thoughts?

I have the same problem here. I tried running %config Completer.use_jedi = False, which worked the last few nights, but stopped working today. I’m keen to hear if anyone has the same problem.

I believe it was a correct solution, because

from fastai.vision.all import *
!pip install -U timm
import timm

doesn’t work, whereas

!pip install -U timm
import timm
from fastai.vision.all import *

does

the reason why I focused on this was I heard Jeremy pointing this out in one of the videos (live coding sessions I believe)

1 Like