import%20marimo%0A%0A__generated_with%20%3D%20%220.12.5%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22display%3A%20flex%3B%20align-items%3A%20center%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22flex%3A%201%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22font-size%3A%201.5em%3B%22%3EAlexNet%3A%20Hands%20on%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3ESadamori%20Kojaku%3C%2Fp%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22flex%3A%201%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22https%3A%2F%2Fi.ytimg.com%2Fvi%2FZUc0Mib5DeI%2Fhq720.jpg%3Fsqp%3D-oaymwEhCK4FEIIDSFryq4qpAxMIARUAAAAAGAElAADIQj0AgKJD%26rs%3DAOn4CLAExZC6AMn-c7XTAeA2k30TJ16MgQ%22%20width%3D%22400%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20tip%20%7C%20How%20to%20run%20this%20notebook%0A%0A%20%20%20%20%20%20%20%20To%20run%20the%20notebook%2C%20first%20download%20it%20as%20a%20%60.py%60%20file%2C%20then%20use%20the%20following%20steps%3A%0A%0A%20%20%20%20%20%20%20%20Install%20**marimo**%3A%0A%20%20%20%20%20%20%20%20%60%60%60bash%0A%20%20%20%20%20%20%20%20pip%20install%20marimo%0A%20%20%20%20%20%20%20%20%60%60%60%0A%0A%20%20%20%20%20%20%20%20Install%20**uv**%20(a%20Python%20package%20manager%20that%20automatically%20manages%20dependencies)%3A%0A%20%20%20%20%20%20%20%20%60%60%60bash%0A%20%20%20%20%20%20%20%20pip%20install%20uv%0A%20%20%20%20%20%20%20%20%60%60%60%0A%0A%20%20%20%20%20%20%20%20Launch%20the%20notebook%0A%20%20%20%20%20%20%20%20%60%60%60bash%0A%20%20%20%20%20%20%20%20marimo%20edit%20--sandbox%20%3Cfilename%3E.py%0A%20%20%20%20%20%20%20%20%60%60%60%0A%0A%20%20%20%20%20%20%20%20The%20notebook%20will%20open%20in%20your%20web%20browser.%20All%20necessary%20packages%20will%20be%20installed%20automatically%20in%20a%20dedicated%20virtual%20environment%20managed%20by%20**uv**.%0A%20%20%20%20%20%20%20%20%2F%2F%2F%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20%23%20Load%20AlexNet%20model%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20torchvision.models%20as%20models%0A%0A%20%20%20%20alexnet%20%3D%20models.alexnet(pretrained%3DTrue)%0A%20%20%20%20alexnet.eval()%0A%20%20%20%20print(alexnet.eval())%0A%20%20%20%20return%20alexnet%2C%20models%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20%23%20Image%20Data%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20from%20PIL%20import%20Image%0A%20%20%20%20import%20requests%0A%20%20%20%20from%20io%20import%20BytesIO%0A%0A%20%20%20%20%23%20Download%20and%20preprocess%20an%20example%20image%0A%20%20%20%20url%20%3D%20%22https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F2%2F26%2FYellowLabradorLooking_new.jpg%22%0A%0A%20%20%20%20%23%20Real%20Bearcat%0A%20%20%20%20%23%20url%20%3D%20%22https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcSnzXi8Bfi2lq22uqFW3zF0bt8Ir7DjmjTJtg%26s%22%0A%0A%20%20%20%20%23%20Bearcat%0A%20%20%20%20%23%20url%20%3D%20%22https%3A%2F%2Fblog.suny.edu%2Fwp-content%2Fuploads%2F2014%2F03%2FBinghamton-baxter.jpg%22%0A%0A%20%20%20%20image%20%3D%20Image.open(BytesIO(requests.get(url).content)).convert(%22RGB%22)%0A%20%20%20%20image%0A%20%20%20%20return%20BytesIO%2C%20Image%2C%20image%2C%20requests%2C%20url%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20%23%20Preprocessing%20(Resizing%2C%20cropping%2C%20and%20normalization)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(image)%3A%0A%20%20%20%20import%20torchvision.transforms%20as%20transforms%0A%0A%20%20%20%20%23%20Preprocessing%20pipeline%20for%20AlexNet%0A%20%20%20%20preprocess%20%3D%20transforms.Compose(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20transforms.Resize(256)%2C%20%20%23%20Resize%20shorter%20side%20to%20256%0A%20%20%20%20%20%20%20%20%20%20%20%20transforms.CenterCrop(224)%2C%20%20%23%20Center%20crop%20to%20224x224%0A%20%20%20%20%20%20%20%20%20%20%20%20transforms.ToTensor()%2C%20%20%23%20Convert%20to%20tensor%20%5BC%2C%20H%2C%20W%5D%2C%20scale%20to%20%5B0%2C%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20transforms.Normalize(%20%20%23%20Normalize%20using%20ImageNet%20stats%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mean%3D%5B0.485%2C%200.456%2C%200.406%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20std%3D%5B0.229%2C%200.224%2C%200.225%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Preprocess%20the%20input%20image%0A%20%20%20%20image_data%20%3D%20preprocess(image)%0A%20%20%20%20return%20image_data%2C%20preprocess%2C%20transforms%0A%0A%0A%40app.cell%0Adef%20_(image_data)%3A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20fig%2C%20axes%20%3D%20plt.subplots(figsize%3D(15%2C%205)%2C%20ncols%3D3)%0A%0A%20%20%20%20axes%5B0%5D.imshow(image_data%5B0%5D)%0A%20%20%20%20axes%5B1%5D.imshow(image_data%5B1%5D)%0A%20%20%20%20axes%5B2%5D.imshow(image_data%5B2%5D)%0A%20%20%20%20return%20axes%2C%20fig%2C%20plt%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20%23%20Inference%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(alexnet%2C%20image_data)%3A%0A%20%20%20%20import%20torch%0A%0A%20%20%20%20input_tensor%20%3D%20image_data.unsqueeze(0)%20%20%23%20Add%20batch%20dimension%0A%0A%20%20%20%20with%20torch.no_grad()%3A%0A%20%20%20%20%20%20%20%20output%20%3D%20alexnet(input_tensor)%0A%0A%20%20%20%20print(%22Size%3A%22%2C%20output.shape)%0A%20%20%20%20print(output%5B0%5D%5B%3A10%5D)%0A%20%20%20%20return%20input_tensor%2C%20output%2C%20torch%0A%0A%0A%40app.cell%0Adef%20_(output%2C%20torch)%3A%0A%20%20%20%20%23%20Get%20top-5%20prediction%0A%20%20%20%20logits%2C%20predicted%20%3D%20torch.topk(output%5B0%5D%2C%205)%0A%0A%20%20%20%20print(predicted)%0A%20%20%20%20return%20logits%2C%20predicted%0A%0A%0A%40app.cell%0Adef%20_(logits%2C%20plt%2C%20predicted)%3A%0A%20%20%20%20from%20torchvision.models%20import%20AlexNet_Weights%0A%20%20%20%20import%20seaborn%20as%20sns%0A%0A%20%20%20%20weights%20%3D%20AlexNet_Weights.DEFAULT%0A%20%20%20%20class_labels%20%3D%20weights.meta%5B%22categories%22%5D%0A%0A%20%20%20%20%23%20Prepare%20data%0A%20%20%20%20labels%20%3D%20%5Bclass_labels%5Bi%5D%20for%20i%20in%20predicted%5D%0A%20%20%20%20scores%20%3D%20logits%0A%0A%20%20%20%20%23%20Plot%0A%20%20%20%20sns.barplot(x%3Dscores%2C%20y%3Dlabels)%0A%20%20%20%20plt.xlabel(%22Probability%22)%0A%20%20%20%20plt.title(%22Top-5%20AlexNet%20Predictions%22)%0A%20%20%20%20plt.show()%0A%20%20%20%20return%20AlexNet_Weights%2C%20class_labels%2C%20labels%2C%20scores%2C%20sns%2C%20weights%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20inspect%0A%20%20%20%20import%20markdown%0A%20%20%20%20return%20inspect%2C%20markdown%2C%20mo%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
cabbb3cd8fb31f8357148f175fb8b076e2daf9a044154d1591b5c6ea3eeb7bf9