write_text

This commit is contained in:
Jeremy Howard committed 2020-11-29 06:51:47 -08:00
1 parent 169ee1797b
commit bb0dadf1ec
4 files changed
+614 -442

No files matched your search

+374 -325
View File
File diff suppressed because it is too large. Load diff
+153 -57
View File
@@ -2,19 +2,19 @@
"cells": [
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#hide\n",
"!pip install -Uqq fastbook\n",
"# !pip install -Uqq fastbook\n",
"import fastbook\n",
"fastbook.setup_book()"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
@@ -48,14 +48,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true
},
"source": [
"## The Practice of Deep Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"We've seen that deep learning can solve a lot of challenging problems quickly and with little code. As a beginner, there's a sweet spot of problems that are similar enough to our example problems that you can very quickly get extremely useful results. However, deep learning isn't magic! The same 6 lines of code won't work for every problem anyone can think of today. Underestimating the constraints and overestimating the capabilities of deep learning may lead to frustratingly poor results, at least until you gain some experience and can solve the problems that arise. Conversely, overestimating the constraints and underestimating the capabilities of deep learning may mean you do not attempt a solvable problem because you talk yourself out of it. \n",
"\n",
@@ -66,14 +70,19 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Starting Your Project"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"So where should you start your deep learning journey? The most important thing is to ensure that you have some project to work on—it is only through working on your own projects that you will get real experience building and using models. When selecting a project, the most important consideration is data availability. Regardless of whether you are doing a project just for your own learning or for practical application in your organization, you want something where you can get started quickly. We have seen many students, researchers, and industry practitioners waste months or years while they attempt to find their perfect dataset. The goal is not to find the \"perfect\" dataset or project, but just to get started and iterate from there.\n",
"\n",
@@ -84,7 +93,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"As you work through this book, we suggest that you complete lots of small experiments, by running and adjusting the notebooks we provide, at the same time that you gradually develop your own projects. That way, you will be getting experience with all of the tools and techniques that we're explaining, as we discuss them.\n",
"\n",
@@ -97,7 +108,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Since it is easiest to get started on a project where you already have data available, that means it's probably easiest to get started on a project related to something you are already doing, because you already have data about things that you are doing. For instance, if you work in the music business, you may have access to many recordings. If you work as a radiologist, you probably have access to lots of medical images. If you are interested in wildlife preservation, you may have access to lots of images of wildlife.\n",
"\n",
@@ -108,28 +121,37 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### The State of Deep Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Let's start by considering whether deep learning can be any good at the problem you are looking to work on. This section provides a summary of the state of deep learning at the start of 2020. However, things move very fast, and by the time you read this some of these constraints may no longer exist. We will try to keep the [book's website](https://book.fast.ai/) up-to-date; in addition, a Google search for \"what can AI do now\" is likely to provide current information."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Computer vision"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"There are many domains in which deep learning has not been used to analyze images yet, but those where it has been tried have nearly universally shown that computers can recognize what items are in an image at least as well as people can—even specially trained people, such as radiologists. This is known as *object recognition*. Deep learning is also good at recognizing where objects in an image are, and can highlight their locations and name each found object. This is known as *object detection* (there is also a variant of this that we saw in <<chapter_intro>>, where every pixel is categorized based on what kind of object it is part of—this is called *segmentation*). Deep learning algorithms are generally not good at recognizing images that are significantly different in structure or style to those used to train the model. For instance, if there were no black-and-white images in the training data, the model may do poorly on black-and-white images. Similarly, if the training data did not contain hand-drawn images, then the model will probably do poorly on hand-drawn images. There is no general way to check what types of images are missing in your training set, but we will show in this chapter some ways to try to recognize when unexpected image types arise in the data when the model is being used in production (this is known as checking for *out-of-domain* data).\n",
"\n",
@@ -140,14 +162,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Text (natural language processing)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Computers are very good at classifying both short and long documents based on categories such as spam or not spam, sentiment (e.g., is the review positive or negative), author, source website, and so forth. We are not aware of any rigorous work done in this area to compare them to humans, but anecdotally it seems to us that deep learning performance is similar to human performance on these tasks. Deep learning is also very good at generating context-appropriate text, such as replies to social media posts, and imitating a particular author's style. It's good at making this content compelling to humans too—in fact, even more compelling than human-generated text. However, deep learning is currently not good at generating *correct* responses! We don't currently have a reliable way to, for instance, combine a knowledge base of medical information with a deep learning model for generating medically correct natural language responses. This is very dangerous, because it is so easy to create content that appears to a layman to be compelling, but actually is entirely incorrect.\n",
"\n",
@@ -158,14 +184,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Combining text and images"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"The ability of deep learning to combine text and images into a single model is, generally, far better than most people intuitively expect. For example, a deep learning model can be trained on input images with output captions written in English, and can learn to generate surprisingly appropriate captions automatically for new images! But again, we have the same warning that we discussed in the previous section: there is no guarantee that these captions will actually be correct.\n",
"\n",
@@ -174,28 +204,36 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Tabular data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"For analyzing time series and tabular data, deep learning has recently been making great strides. However, deep learning is generally used as part of an ensemble of multiple types of model. If you already have a system that is using random forests or gradient boosting machines (popular tabular modeling tools that you will learn about soon), then switching to or adding deep learning may not result in any dramatic improvement. Deep learning does greatly increase the variety of columns that you can include—for example, columns containing natural language (book titles, reviews, etc.), and high-cardinality categorical columns (i.e., something that contains a large number of discrete choices, such as zip code or product ID). On the down side, deep learning models generally take longer to train than random forests or gradient boosting machines, although this is changing thanks to libraries such as [RAPIDS](https://rapids.ai/), which provides GPU acceleration for the whole modeling pipeline. We cover the pros and cons of all these methods in detail in <<chapter_tabular>>."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Recommendation systems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Recommendation systems are really just a special type of tabular data. In particular, they generally have a high-cardinality categorical variable representing users, and another one representing products (or something similar). A company like Amazon represents every purchase that has ever been made by its customers as a giant sparse matrix, with customers as the rows and products as the columns. Once they have the data in this format, data scientists apply some form of collaborative filtering to *fill in the matrix*. For example, if customer A buys products 1 and 10, and customer B buys products 1, 2, 4, and 10, the engine will recommend that A buy 2 and 4. Because deep learning models are good at handling high-cardinality categorical variables, they are quite good at handling recommendation systems. They particularly come into their own, just like for tabular data, when combining these variables with other kinds of data, such as natural language or images. They can also do a good job of combining all of these types of information with additional metadata represented as tables, such as user information, previous transactions, and so forth.\n",
"\n",
@@ -204,56 +242,73 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"<img alt=\"Terry Pratchett books recommendation\" caption=\"A not-so-useful recommendation\" id=\"pratchett\" src=\"images/pratchett.png\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"#### Other data types"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Often you will find that domain-specific data types fit very nicely into existing categories. For instance, protein chains look a lot like natural language documents, in that they are long sequences of discrete tokens with complex relationships and meaning throughout the sequence. And indeed, it does turn out that using NLP deep learning methods is the current state-of-the-art approach for many types of protein analysis. As another example, sounds can be represented as spectrograms, which can be treated as images; standard deep learning approaches for images turn out to work really well on spectrograms."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### The Drivetrain Approach"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"There are many accurate models that are of no use to anyone, and many inaccurate models that are highly useful. To ensure that your modeling work is useful in practice, you need to consider how your work will be used. In 2012 Jeremy, along with Margit Zwemer and Mike Loukides, introduced a method called *the Drivetrain Approach* for thinking about this issue."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"The Drivetrain Approach, illustrated in <<drivetrain>>, was described in detail in [\"Designing Great Data Products\"](https://www.oreilly.com/radar/drivetrain-approach-data-products/). The basic idea is to start with considering your objective, then think about what actions you can take to meet that objective and what data you have (or can acquire) that can help, and then build a model that you can use to determine the best actions to take to get the best results in terms of your objective."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"<img src=\"images/drivetrain-approach.png\" id=\"drivetrain\" caption=\"The Drivetrain Approach\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Consider a model in an autonomous vehicle: you want to help a car drive safely from point A to point B without human intervention. Great predictive modeling is an important part of the solution, but it doesn't stand on its own; as products become more sophisticated, it disappears into the plumbing. Someone using a self-driving car is completely unaware of the hundreds (if not thousands) of models and the petabytes of data that make it work. But as data scientists build increasingly sophisticated products, they need a systematic design approach.\n",
"\n",
@@ -262,7 +317,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"Let's consider another example: recommendation systems. The *objective* of a recommendation engine is to drive additional sales by surprising and delighting the customer with recommendations of items they would not have purchased without the recommendation. The *lever* is the ranking of the recommendations. New *data* must be collected to generate recommendations that will *cause new sales*. This will require conducting many randomized experiments in order to collect data about a wide range of recommendations for a wide range of customers. This is a step that few organizations take; but without it, you don't have the information you need to actually optimize recommendations based on your true objective (more sales!).\n",
"\n",
@@ -273,28 +330,36 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"heading_collapsed": true
},
"source": [
"## Gathering Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"For many types of projects, you may be able to find all the data you need online. The project we'll be completing in this chapter is a *bear detector*. It will discriminate between three types of bear: grizzly, black, and teddy bears. There are many images on the internet of each type of bear that we can use. We just need a way to find them and download them. We've provided a tool you can use for this purpose, so you can follow along with this chapter and create your own image recognition application for whatever kinds of objects you're interested in. In the fast.ai course, thousands of students have presented their work in the course forums, displaying everything from hummingbird varieties in Trinidad to bus types in Panama—one student even created an application that would help his fiancée recognize his 16 cousins during Christmas vacation!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"At the time of writing, Bing Image Search is the best option we know of for finding and downloading images. It's free for up to 1,000 queries per month, and each query can download up to 150 images. However, something better might have come along between when we wrote this and when you're reading the book, so be sure to check out the [book's website](https://book.fast.ai/) for our current recommendation."
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidden": true
},
"source": [
"> important: Keeping in Touch With the Latest Services: Services that can be used for creating datasets come and go all the time, and their features, interfaces, and pricing change regularly too. In this section, we'll show how to use the Bing Image Search API available as part of Azure Cognitive Services at the time this book was written. We'll be providing more options and more up to date information on the [book's website](https://book.fast.ai/), so be sure to have a look there now to get the most current information on how to download images from the web to create a dataset for deep learning."
]
@@ -309,7 +374,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
@@ -331,16 +396,16 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<function utils.search_images_bing(key, term, min_sz=128)>"
"<function fastbook.search_images_bing(key, term, min_sz=128, max_images=150)>"
]
},
"execution_count": null,
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
@@ -351,7 +416,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -360,7 +425,7 @@
"150"
]
},
"execution_count": null,
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@@ -380,7 +445,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 12,
"metadata": {
"hide_input": true
},
@@ -392,7 +457,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
@@ -402,17 +467,17 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<PIL.Image.Image image mode=RGB size=109x128 at 0x7F78BCDD5390>"
"<PIL.Image.Image image mode=RGB size=108x128 at 0x7F0D8DA91790>"
]
},
"execution_count": null,
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -431,7 +496,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
@@ -441,9 +506,40 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 20,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/html": [],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if not path.exists():\n",
" path.mkdir()\n",
@@ -463,16 +559,16 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(#421) [Path('bears/black/00000095.jpg'),Path('bears/black/00000133.jpg'),Path('bears/black/00000062.jpg'),Path('bears/black/00000023.jpg'),Path('bears/black/00000029.jpg'),Path('bears/black/00000094.jpg'),Path('bears/black/00000124.jpg'),Path('bears/black/00000056.jpeg'),Path('bears/black/00000046.jpg'),Path('bears/black/00000045.jpg')...]"
"(#406) [Path('bears/black/00000149.jpg'),Path('bears/black/00000095.jpg'),Path('bears/black/00000133.jpg'),Path('bears/black/00000062.jpg'),Path('bears/black/00000023.jpg'),Path('bears/black/00000029.jpg'),Path('bears/black/00000094.jpg'),Path('bears/black/00000124.jpg'),Path('bears/black/00000105.jpg'),Path('bears/black/00000046.jpg')...]"
]
},
"execution_count": null,
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -498,7 +594,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -514,10 +610,10 @@
{
"data": {
"text/plain": [
"(#0) []"
"(#11) [Path('bears/black/00000147.jpg'),Path('bears/black/00000057.jpg'),Path('bears/black/00000140.jpg'),Path('bears/black/00000129.jpg'),Path('bears/teddy/00000006.jpg'),Path('bears/teddy/00000048.jpg'),Path('bears/teddy/00000076.jpg'),Path('bears/teddy/00000125.jpg'),Path('bears/teddy/00000090.jpg'),Path('bears/teddy/00000075.jpg')...]"
]
},
"execution_count": null,
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -536,7 +632,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
@@ -2001,4 +2097,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}
+58 -48
View File
@@ -941,8 +941,8 @@
{
"data": {
"text/plain": [
"tensor([ 0.7476, -1.1988, 4.5421, -1.5915, -0.6749, 0.0343, -2.4930, -0.8330, -0.3817, -1.4876, -0.1683, 2.1547, -3.4151, -1.1743, 0.1530, -1.6801, -2.3067, 0.7063, -1.3358, -0.3715],\n",
" grad_fn=<SelectBackward>)"
"TensorImage([ 0.7476, -1.1988, 4.5421, -1.5915, -0.6749, 0.0343, -2.4930, -0.8330, -0.3817, -1.4876, -0.1683, 2.1547, -3.4151, -1.1743, 0.1530, -1.6801, -2.3067, 0.7063, -1.3358, -0.3715],\n",
" grad_fn=<AliasBackward>)"
]
},
"execution_count": 25,
@@ -1019,7 +1019,7 @@
{
"data": {
"text/plain": [
"tensor(1.0342, grad_fn=<BinaryCrossEntropyWithLogitsBackward>)"
"TensorImage(1.0342, grad_fn=<AliasBackward>)"
]
},
"execution_count": 27,
@@ -1145,28 +1145,28 @@
" <td>0.942663</td>\n",
" <td>0.703737</td>\n",
" <td>0.233307</td>\n",
" <td>00:07</td>\n",
" <td>00:08</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.823155</td>\n",
" <td>0.555462</td>\n",
" <td>0.298347</td>\n",
" <td>00:06</td>\n",
" <td>0.821548</td>\n",
" <td>0.550827</td>\n",
" <td>0.295319</td>\n",
" <td>00:08</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.606124</td>\n",
" <td>0.202830</td>\n",
" <td>0.815060</td>\n",
" <td>00:06</td>\n",
" <td>0.604189</td>\n",
" <td>0.202585</td>\n",
" <td>0.816474</td>\n",
" <td>00:08</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.360787</td>\n",
" <td>0.123490</td>\n",
" <td>0.942052</td>\n",
" <td>00:06</td>\n",
" <td>0.359258</td>\n",
" <td>0.123299</td>\n",
" <td>0.944283</td>\n",
" <td>00:08</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
@@ -1194,24 +1194,24 @@
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.134407</td>\n",
" <td>0.118581</td>\n",
" <td>0.949661</td>\n",
" <td>00:08</td>\n",
" <td>0.135746</td>\n",
" <td>0.123404</td>\n",
" <td>0.944442</td>\n",
" <td>00:09</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.117051</td>\n",
" <td>0.104169</td>\n",
" <td>0.950657</td>\n",
" <td>00:08</td>\n",
" <td>0.118443</td>\n",
" <td>0.107534</td>\n",
" <td>0.951255</td>\n",
" <td>00:09</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.097517</td>\n",
" <td>0.101461</td>\n",
" <td>0.952789</td>\n",
" <td>00:08</td>\n",
" <td>0.098525</td>\n",
" <td>0.104778</td>\n",
" <td>0.951554</td>\n",
" <td>00:10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
@@ -1254,7 +1254,7 @@
{
"data": {
"text/plain": [
"(#2) [0.10146083682775497,0.9298606514930725]"
"(#2) [0.10477833449840546,0.9314740300178528]"
]
},
"execution_count": 31,
@@ -1292,7 +1292,7 @@
{
"data": {
"text/plain": [
"(#2) [0.10146083682775497,0.943486213684082]"
"(#2) [0.10477833449840546,0.9429482221603394]"
]
},
"execution_count": 32,
@@ -1347,7 +1347,7 @@
{
"data": {
"text/plain": [
"tensor(0.9575)"
"TensorImage(0.9567)"
]
},
"execution_count": 34,
@@ -1373,7 +1373,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD7CAYAAABt0P8jAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAk00lEQVR4nO3deXTc5X3v8fdX+y5Llizbkm15ExibGGxhDL5ZyE5TAqmzmkJaSJ0DodC9bi++pNykS5pzckILtOamDSEsaVpIyEJwE0gJmMU2YIhYvMkbWLZGkmVptM987x8zcmQxxiMz0kjz+7zOmSPPM8/85js/S5955vk98xtzd0REJDiy0l2AiIhMLAW/iEjAKPhFRAJGwS8iEjAKfhGRgMlJdwHJqKqq8vr6+nSXISIypWzfvj3k7tWj26dE8NfX17Nt27Z0lyEiMqWY2f5E7ZrqEREJGAW/iEjAKPhFRAJGwS8iEjAKfhGRgFHwi4gEjIJfRCRgpsQ6fpHx5O60dvdzsL2XQx09tHb1E4k6UQfHcY/1cectbbnZWUwvyaeqJI+q0nyqS/KpKsmnMC873U9L5JQU/BII7eEBDrb3cLCjh0MdvRxsj/08FL/ePxRN6eMV52VTVRp7EagqyaOqJJ/SglzMwIAss9i/zTDALN4GZGUZOVlGfk4W+bnZsZ858Z+5v/l3QW42eTlZZBmxFyIg6iNeqCD+YhVvw8nPyaYwL5ui3NjP/JwszCylz10mPwW/ZJTu/iF2HuliZ0sXr7V0sfNIF6+3dNEWHjip37SiXOZUFNFQU8r7z57BnMoi6ioKmVNRxIyyAnKzDWM4nMEwskYFtZkxMBSlLdxPqGuAUHc/rd39hLp/cz3U3U9zKMzWfR109w2deLcQHRHM6ZRlUJSXQ0FuNkV5sUthXjbFeTnMLC9gTkV8v8T3T01ZAdlZeqGY6hT8MiX1DUbY1xbm9RHh/vqRLg62957oU5ibTcPMUj6wZAYNNaXMm15MXUUhdRWFlBbkpqSOvJwsZpUXMqu88Iy34SdG5LEXhKg7kajTPxilfyhK/1Ak9nMwSt9QJN4ea+sbjOAOWVmMeKF667uI4VF9/1CEvsEIPQOxS+/wz8GhEf+O0NU3xK92tXLkeP9JteZmG7OnFSZ8QZhZVsDM8gIKcjXNNdkp+GXScneOdvWzp7Wbva1h9raGY/8OdXOoo/fEaDkny1hQXczyuml8pnEODTWlnD2zjLqKQrKmwOjU4tM+ANn8pt6ivDQVNELfYIQ3j/XGpsdGTZP9/NWjhLr733Kf8sJcZpYVUFNewMyy/BH/LqCmrIDq0nwqi/PIzdbaknRR8Muk0D8U4aVDnTzX3M6uI13sDcWCvrt/6ESfwtxs5lcVc96cCn7n/DoWVBfTUFPKgupi8nM0yhwPBbnZLKguYUF1ScLbewcivHGsh5bOflqO93HkeB8tnX0n/v3a4eOEuvuJJpjSqijKjR8DyY8fD4kdC6kuyaeqNI9Z5YUsrC4hL0cvEKmm4Je06BkY4vn9x3iuuY1nm9t54eAxBuIHWGunFbKgupi1K2pZOKOEBVUlLKguZmZZwZQYwQdJYV42i2aUsmhG6Sn7DEWitHb309LZx5Hj/SeOfYw8FvLyoWOEugdOeqGH2NTSwuoSzpldxjmzylgSv1QWT4K3Q1OYgl8mRGfvINv3t/NsczvPNbfz8qFOhqJOlsGy2nKuXj2PVfMruaC+kgr9UWeUnOzkj4P0DkROvCgcaO/h1cNdvHr4OE/uCvHg82+c6DezrIBzZpexZFYpS2aVsbxuGnMqi8bzaWQU83QvK0hCY2Oj63z8U8vRrj62NnewdV8s6F9tOY57bAS3vG4aq+ZXsmp+JSvnVaTsQKtktlB3P68ePs6rh4/zypvHefVwF7tbu4nE55HmVhaxZlEVaxZN5+KFVXpXAJjZdndvfEu7gl/eKXdnX1sPW5vbeW5fO1v3tbO/rQeIzcuvmDeNC+oruXD+dM6fO02rPiRl+oci7DrSzbZ97Ty5u41n97bRFZ8uOmdWGf9rcRVrFlVxQX0FRXnBm+B4R8FvZpXAt4APAyHgr9z9vgT98oG/Bz4DFAL3Aze5++CIPp8FbgHmAi3A77n7r97u8RX8k4u7s+toN0/tDrF1Xztb93XQ2hVb3VFRlEtjfSWr6iu5YH4lS2eXafWGTJihSJSX3uhky+4QT+4O8fz+YwxEouRmGyvmVrBmURXvO6uac2vLA/HBtXca/PcTO6/PtcB5wE+Ai929aVS/W4APApcD2cCPgEfd/Zb47R8C/h+xF4bngFkA7v4Gb0PBn36RqPP8gQ42N7Ww+ZUjJ0b0tdMKT8zNr5pfwcLqkkD8QcnU0DsQYeu+dp7aHeKpPSGa3oxNOc4uL+DDS2fy4aU1rKqvJCdDBydnHPxmVgx0AMvcfWe87R7gDXffMKrvNuAf3P378evr4tfnxK9vAb7l7t8aS/EK/vToG4zwq10h/vuVFn7x6lHawgPkZWdx8aLpfOicGt531gxqp535B5dEJlp7eIDHXjvKo00tPLGzlf6hKBVFuXxgSQ0fWTqTdy+uyqipyFMFfzKTXg1AZDj043YA7030OPHLyOt1ZlYOdAONwMNmthsoAH4A/Lm7975lQ2brgfUAc+fOTaJMSYWO+B/G5ldaeGJniN7BCKUFOVxy1gw+vLSG9zZU62CsTFmVxXl8cmUdn1xZR8/AEP/zeiuPNrXwaFML/7n9EEV52by3oZqPLJ3JJWfPoLwwM3/Xkwn+EqBzVFsnkGjh7iPATWb2OLGpnhvj7UVAMZALfBJ4NzAI/BC4Gfjfozfk7puATRAb8SdRp7wDrV39/O1PX+XhHW8SiTozywr45Mo6Pry0hgvnT9eHaCTjFOXlcOm5s7j03FkMDEV5Zm8bj8anMh/5dQu52caaRVV87NxZfHjpzIx6EUhmqud84Cl3LxrR9qfA+9z9slF9C4F/BD4B9AN3AX9D7EBvGdBO7GDu3fH+a4Gb3f38t6tBUz3jJxp1Hth6kL9/5FX6BqNcfdE8Lls+m3Nry/VhKQmkaNR54eAxHm1q4ScvHeaNY73kZWfxnoYqPvauWXxwSc2Uedf7TqZ6dgI5ZrbY3XfF25YDTaM7xqdsbohfhqdrtrt7BOgws0PEzkUlk8DrLV389UMvs31/B6sXVPLVT5zLwlN8NF8kKLKyjJXzKlg5r4K/uvRsdhzq5Mc73uQnLx/m568eJS8ni/c1VPPby2fzgbNnUJw/9ZaJJruq5wFigf0FYqt6fkriVT218X6HgQuB7wPXuvvm+O23ApcCHyM21fMw8Et33/h2j68Rf2r1DkS47bFd3PXEXkoLcrj5Y+fwOytqtRpH5G3E3gl08KMdh/npy4c52tVPQW4W7z97Bh87dzYfPGfGpDtnVCrW8f8b8CGgDdjg7veZ2VzgFeAcdz9gZu8BvgPMAA4Ct7r7vSO2kwt8E1gH9AH/AfyFu/e93eMr+FPn8deP8n9++GsOtvfy6cY6/urSJTpFgsgYRaPO1n3t/OTlw/z05RZC3f3MKi/gi+9ZwGdXzZ00K4P0yd2AO3q8j7/58Sv85KXDLKwu5m8/cS4XLpie7rJEprxI1PnVrlbueHwPz+1rp6oknz9493x+d/W8tE8DKfgDKhJ17nt2P1/72ev0R6L84SWLWP/eBZPuLalIJnh2bxv/9NhuntwdYlpRLteumc/n19RTlqaDwQr+AOofinDT/S/ys6YW/teiKr5yxTLqq4rTXZZIxnv+QAe3P7abX7x2lNKCHH7v4nquWTN/wqdVFfwB0zMwxBfv2c6vdoXY+NvncM2aeh28FZlgv36jk39+bDc/a2qhKC+bq1bP49p3z2dGacGEPL6CP0CO9w1yzb9v5fkDHfzD2nfxqcY56S5JJNB2Huni9sd386Mdb5KXk8WtH1/Gpy8Y/7/LUwW/Po6ZYdq6+1l31zPsOHSMf163QqEvMgk01JTyzc+ez8//5L2snFfBX/zXS3z54SaGItG01KPgzyAtnX18ZtMz7DrSzaarG/mtc2eluyQRGWFBdQl3//4qfn9NPd/eso/f+/etHOsZmPA6FPwZ4kBbD5/61y20dPZx9zWruOSsGekuSUQSyMnO4pbLlvK1te/i2eY2Lr/9KXYd6ZrQGhT8GWDXkS4+9a9b6Oob4t4vXMhqrc8XmfQ+fcEcHli/mnB/hE/csYWfv3Jkwh5bwT/F/fqNTj6z6RmiDt9bfxHL50xLd0kikqSV8yp5+IY1zK8q5g/u2cbtj+9mIhbcKPinsG372vncpmcozM3m+1+8iLNmJjpTtohMZrOnFfIfX7yI337XbP7x0de58YEX6R2IjOtjTr3TygkAv9rVyvrvbGdWeQHf/cKFzNY3YYlMWYV52dz22fM4e2YpX9/8OvtCYTZdvZJZ5ePzd60R/xT081eOcO23t1FfVcz3vniRQl8kA5gZX7pkEXdd1UhzKMxl//QU2/e3j8tjKfinmP9+5QjX3budJbNKeeAPVlNdmp/ukkQkhT54Tg0PXX8xxfnZfG7Ts7x48FjKH0NTPVPI5qYWvnTf85wzu5zvXLMqo74KTkR+Y3FNKT/80hr+/al9nFtbnvLtK/iniJGhf8+1q9J2tj8RmRjTivL44w81jMu2NdUzBWxuauH6exX6IpIaCv5J7tF46C+rVeiLSGoo+CexR5ta+NK9z3NuXTnfUeiLSIoo+Cepn/36N6F/9zUKfRFJnaSC38wqzewhMwub2X4zW3eKfvlm9g0ze9PMOszsjvgXrA/f/ksz6zOz7vjl9VQ9kUzys1+3cMN98ZG+Ql9EUizZEf/twABQA1wJ3GlmSxP02wA0AsuABmAFcPOoPje4e0n8ctaZlZ25fvbrwyeFfqlCX0RS7LTBb2bFwFpgo7t3u/uTwMPAVQm6Xwbc5u7t7t4K3AZck8qCM1ks9F/gXQp9ERlHyYz4G4CIu+8Line truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
@@ -1572,7 +1572,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<PIL.Image.Image image mode=RGB size=160x120 at 0x7F51A2492390>"
"<PIL.Image.Image image mode=RGB size=160x120 at 0x7F2DF0A49690>"
]
},
"execution_count": 42,
@@ -1746,7 +1746,7 @@
{
"data": {
"text/plain": [
"tensor([[-0.3375, 0.2193]], device='cuda:5')"
"TensorPoint([[-0.3375, 0.2193]], device='cuda:6')"
]
},
"execution_count": 48,
@@ -1825,6 +1825,14 @@
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jhoward/anaconda3/lib/python3.7/site-packages/fastbook/__init__.py:55: UserWarning: Not providing a value for linspace's steps is deprecated and will throw a runtime error in a future release. This warning will appear only once per process. (Triggered internally at /pytorch/aten/src/ATen/native/RangeFactories.cpp:23.)\n",
" x = torch.linspace(min,max)\n"
]
},
{
"data": {
"image/png": "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 truncated
@@ -1949,9 +1957,9 @@
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.050496</td>\n",
" <td>0.008238</td>\n",
" <td>00:36</td>\n",
" <td>0.049630</td>\n",
" <td>0.007602</td>\n",
" <td>00:42</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
@@ -1978,21 +1986,21 @@
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.007744</td>\n",
" <td>0.004763</td>\n",
" <td>00:47</td>\n",
" <td>0.008714</td>\n",
" <td>0.004291</td>\n",
" <td>00:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.003334</td>\n",
" <td>0.000388</td>\n",
" <td>00:48</td>\n",
" <td>0.003213</td>\n",
" <td>0.000715</td>\n",
" <td>00:53</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.001468</td>\n",
" <td>0.000044</td>\n",
" <td>00:48</td>\n",
" <td>0.001482</td>\n",
" <td>0.000036</td>\n",
" <td>00:53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
@@ -2047,7 +2055,9 @@
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
@@ -2061,7 +2071,7 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 432x576 with 6 Axes>"
]
+29 -12
View File
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -14,19 +14,11 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {
"hide_input": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Warning: Your Kaggle API key is readable by other users on this system! To fix this, you can run 'chmod 600 /home/sgugger/.kaggle/kaggle.json'\n"
]
}
],
"outputs": [],
"source": [
"#hide\n",
"from fastbook import *\n",
@@ -317,7 +309,7 @@
"cred_path = Path('~/.kaggle/kaggle.json').expanduser()\n",
"if not cred_path.exists():\n",
" cred_path.parent.mkdir(exist_ok=True)\n",
" cred_path.write(creds)\n",
" cred_path.write_text(creds)\n",
" cred_path.chmod(0o600)"
]
},
@@ -9828,6 +9820,31 @@
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,