Step 2: Creating Deep Lake Datasets
Creating and storing Deep Lake Datasets.
Last updated
Creating and storing Deep Lake Datasets.
Last updated
This guide creates Deep Lake datasets locally. You may create datasets in the Activeloop cloud by registering, creating an API token, and replacing the local paths below with the path to your Deep Lake organization hub://organization_name/dataset_name
You don't have to worry about uploading datasets after you've created them. They are automatically synchronized with wherever they are being stored.
Let's follow along with the example below to create our first dataset manually. First, download and unzip the small classification dataset below called animals.
The dataset has the following folder structure:
Now that you have the data, you can create a Deep Lake Dataset and initialize its tensors. Running the following code will create Deep Lake dataset inside of the ./animals_deeplake
folder.
Next, let's inspect the folder structure for the source dataset './animals'
to find the class names and the files that need to be uploaded to the Deep Lake dataset.
Next, let's create the dataset tensors and upload metadata. Check out our page on Storage Synchronization for details about the with
syntax below.
Specifying htype
and dtype
is not required, but it is highly recommended in order to optimize performance, especially for large datasets. Usedtype
to specify the numeric type of tensor data, and usehtype
to specify the underlying data structure.
Finally, let's populate the data in the tensors. The data is automatically uploaded to the dataset, regardless of whether it's local or in the cloud.
Appending the object deeplake.read(path)
is equivalent to appending PIL.Image.fromarray(path)
. However, the deeplake.read()
method is significantly faster because it does not decompress and recompress the image if the compression matches thesample_compression
for that tensor. Further details are available in Understanding Compression.
In order to maintain proper indexing across tensors, ds.append({...})
requires that you to append to all tensors in the dataset. If you wish to skip tensors during appending, please use ds.append({...}, skip_ok = True)
or append to a single tensor using ds.tensor_name.append(...)
.
Check out the first image from this dataset. More details about Accessing Data are available in Step 4.
You can print a summary of the dataset structure using:
Congrats! You just created your first dataset! 🎉
If your source data conforms to one of the formats below, you can ingest them directly with 1 line of code.
Classifications
For example, the above animals dataset can be converted to Deep Lake format using:
Often it's important to create tensors hierarchically, because information between tensors may be inherently coupled—such as bounding boxes and their corresponding labels. Hierarchy can be created using tensor groups
:
Tensors in groups are accessed via:
For more detailed information regarding accessing datasets and their tensors, check out Step 4.