<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>StarCraftImage Dataset | StarCraftImage</title><link>https://starcraftdata.davidinouye.com/docs/</link><atom:link href="https://starcraftdata.davidinouye.com/docs/index.xml" rel="self" type="application/rss+xml"/><description>StarCraftImage Dataset</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Thu, 01 Jun 2023 00:00:00 +0000</lastBuildDate><image><url>https://starcraftdata.davidinouye.com/media/icon_hub4204d85d19b7c065ccd01d0ca68691f_2506_512x512_fill_lanczos_center_3.png</url><title>StarCraftImage Dataset</title><link>https://starcraftdata.davidinouye.com/docs/</link></image><item><title>StarCraftImage Quickstart</title><link>https://starcraftdata.davidinouye.com/docs/quickstart-examples/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0000</pubDate><guid>https://starcraftdata.davidinouye.com/docs/quickstart-examples/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Please install the StarCraftImage package. This can be done via following &lt;a href="https://starcraftdata.davidinouye.com/docs#install">the install instructions&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pathlib&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">torch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pprint&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">make_dataset_grid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dataset&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">random_seed&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">label_idx_to_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Make a grid of n_samples from a dataset.&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_samples_sqrt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ceil&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sqrt&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_samples&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_samples&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n_samples_sqrt&lt;/span> &lt;span class="o">**&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="c1"># alter n_samples to a number that is a perfect square&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rng&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">RandomState&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">random_seed&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">indices&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">rng&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choice&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dataset&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">n_samples&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">replace&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fig&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">axes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">subplots&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_samples_sqrt&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples_sqrt&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">figsize&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_samples_sqrt&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples_sqrt&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">axes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">axes&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">flatten&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">ax&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sample_idx&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">zip&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">axes&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">indices&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dataset&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">sample_idx&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">array&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]),&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ndim&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ax&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imshow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cmap&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;gray&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ndim&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">moveaxis&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ax&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imshow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ax&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_title&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">label_idx_to_name&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">y&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">label_idx_to_name&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="kc">None&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ax&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">axis&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;off&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tight_layout&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">fig&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">axes&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;..&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">sc2image.dataset&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">StarCraftImage&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">StarCraftCIFAR10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">StarCraftMNIST&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data_dir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Path&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;..&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="s1">&amp;#39;data&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="dataset-overview">Dataset overview&lt;/h2>
&lt;p>There are three main StarCraftII datasets.
Each dataset includes images summarize a 10 second window (255 frames) of a StarCraftII replay.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;code>StarCraftImage&lt;/code>: This is the main dataset which includes multiple image formats:&lt;code>'sparse-hyperspectral'&lt;/code>, &lt;code>'dense-hyperspectral'&lt;/code>, &lt;code>'bag-of-units'&lt;/code>, &lt;code>'bag-of-units-first'&lt;/code>, and contains all unit positioning information throughout the window.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>StarCraftCIFAR10&lt;/code>: This is a simplified version of the &lt;code>StarCraftImage&lt;/code> dataset which exactly matches the setup of the CIFAR10 dataset.
To do this, all images have been condensed into a three channel (RGB) image.
Each pixel value corresponds to the last seen timestamps for any unit at that pixel location,
where the Red channel corresponds to Player 2 units, Green correspond to neutral units, and Blue to Player 1 units.
The 10 classes can be seen below, and equates to: &lt;code>(map_name, did_window_happen_in_first_half_of_replay)&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>StarCraftMNIST&lt;/code>: This is a further simplified version of the &lt;code>StarCraftImage&lt;/code> dataset which exactly matches the setup of the MNIST dataset.
The pixel values also correspond to the last seen timestamps for units at that pixel location (with a player-specific scaling applied), and the 10 classes match that of &lt;code>StarCraftCIFAR10&lt;/code>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">sc2image.dataset&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">_DEFAULT_10_LABELS_DICT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;The 10 class labels are:&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">pprint&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pprint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">_DEFAULT_10_LABELS_DICT&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># pretty prints the label dictionary&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>The 10 class labels are:
{0: ('Acolyte LE', 'Beginning'),
1: ('Acolyte LE', 'End'),
2: ('Abyssal Reef LE', 'Beginning'),
3: ('Abyssal Reef LE', 'End'),
4: ('Ascension to Aiur LE', 'Beginning'),
5: ('Ascension to Aiur LE', 'End'),
6: ('Mech Depot LE', 'Beginning'),
7: ('Mech Depot LE', 'End'),
8: ('Odyssey LE', 'Beginning'),
9: ('Odyssey LE', 'End')}
&lt;/code>&lt;/pre>
&lt;h2 id="loading-the-simplified-datasets">Loading the simplified datasets&lt;/h2>
&lt;h3 id="starcraftcifar10">StarCraftCIFAR10&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">cifar&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StarCraftCIFAR10&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">train&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">download&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">make_dataset_grid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cifar&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">label_idx_to_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">_DEFAULT_10_LABELS_DICT&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>Downloading https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/40719791/starcraftcifar10.tar.gz to ../data/starcraft-cifar10.tar.gz
100%|########| 9318685/9318685
Extracting ../data/starcraft-cifar10.tar.gz to ../data
&lt;/code>&lt;/pre>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./starcraft-cifar10.png" alt="starcraft-cifar10" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="starcraftmnist">StarCraftMNIST&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">mnist&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StarCraftMNIST&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">train&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">download&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">make_dataset_grid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">mnist&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_samples&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">label_idx_to_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">_DEFAULT_10_LABELS_DICT&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>Downloading https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/40720142/starcraftmnist.tar.gz? to ../data/StarCraftMNIST/raw/starcraft-mnist.tar.gz
100%|#######| 8777215/8777215
Extracting ../data/StarCraftMNIST/raw/starcraft-mnist.tar.gz to ../data/StarCraftMNIST/raw
&lt;/code>&lt;/pre>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./starcraft-mnist.png" alt="starcraft-mnist-figure" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="loading-starcraftimage">Loading StarCraftImage&lt;/h2>
&lt;p>This dataset is the most expressive dataset and includes all unit positioning information throughout the window.
There are two main types of image formats used (here &lt;code>image_size&lt;/code> is a hyperparameter that can be set by the user and has a default value of 64):&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Hyperspectral images: This is hyperspectral image with shape (384,&lt;code>image_size&lt;/code>,&lt;code>image_size&lt;/code>), where each channel
corresponds to a player_id+unit_id combination and the value at each location is the last time a unit was seen at that location during the window.
The first 170 channels correspond to Player 1 units, the next 170 channels correspond to Player 2 units, and the last 44 channels correspond to neutral units.
For example, if &lt;code>hyperspectral_image[51, 10, 4]=244&lt;/code> this means Player 1&amp;rsquo;s Terran Battlecruiser was last seen at pixel location (51, 10) at the 244th time step (out of 255 time steps).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Bag of units images: This condensed version of the hyperspectral images and is a tuple of images corresponding to (unit_ids, unit_values) which each has shape (3, &lt;code>C&lt;/code>, &lt;code>image_size&lt;/code>,&lt;code>image_size&lt;/code>), where the first axis corresponds to &lt;code>(player_1_channels, player_2_channels, neutral_channels)&lt;/code> and &lt;code>C&lt;/code> is the number of overlapping units at any one location and is &lt;em>window-specific&lt;/em>.
The unit_ids image is an image where each pixel value corresponds to the unit_id at that pixel location and unit_values is an image where each pixel value corresponds to the last seen timestamps for the corresponding unit at that pixel location.
For example, if &lt;code>unit_ids[2, 3, 10, 4]=51&lt;/code> and &lt;code>unit_values[2, 3, 10, 4]=244&lt;/code>, this means Player 2&amp;rsquo;s Terran Battlecruiser was last seen at pixel location (51, 10) at the 244th time step.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>With this in mind, we can quickly go over the different image formats that are available.&lt;/p>
&lt;ol>
&lt;li>&lt;code>'dense-hyperspectral'&lt;/code>: This is the default image format and returns a hyperspectral image as a pytorch tensor.&lt;/li>
&lt;li>&lt;code>'sparse-hyperspectral'&lt;/code>: This return a hyperspectral image as a sparse COO pytorch tensor&lt;/li>
&lt;li>&lt;code>'bag-of-units'&lt;/code>: This is a bag of units image and returns tuple of (unit_ids_bag, unit_values_bag).&lt;/li>
&lt;li>&lt;code>'bag-of-units-first'&lt;/code>: This returns tuple of (unit_ids_bag, unit_values_bag) where both elements
always have shape (3, &lt;code>image_size&lt;/code>,&lt;code>image_size&lt;/code>), and is equivalent to only returning the first
overlapping dimension of the &lt;code>bag-of-units&lt;/code> representation for each player.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">image_format&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;dense-hyperspectral&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;sparse-hyperspectral&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bag-of-units&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;bag-of-units-first&amp;#39;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scimage&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StarCraftImage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">image_format&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">image_format&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">train&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">download&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">use_metadata_cache&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">verbose&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">For image format `&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">image_format&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">`:&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">The output image type is: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">The output image(s) have shape: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">im&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">im&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]]&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nb">isinstance&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="nb">tuple&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s1">The output image(s) have dtype: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">im&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dtype&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">im&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]]&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nb">isinstance&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="nb">tuple&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dtype&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>Downloading https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/40718405/starcraftimagedataset.tar.gz to ../data/starcraft-image-dataset_v1_0/starcraftimage.tar.gz
100%|#######| 10914999592/10914999592
Extracting ../data/starcraft-image-dataset_v1_0/starcraftimage.tar.gz to ../data/starcraft-image-dataset_v1_0
No cached metadata found at ../data/starcraft-image-dataset_v1_0/cached-metadata.pkl
Loading metadata from csv and saving to cache
For image format `dense-hyperspectral`:
The output image type is: &amp;lt;class 'torch.Tensor'&amp;gt;
The output image(s) have shape: torch.Size([384, 64, 64])
The output image(s) have dtype: torch.uint8
For image format `sparse-hyperspectral`:
The output image type is: &amp;lt;class 'torch.Tensor'&amp;gt;
The output image(s) have shape: torch.Size([384, 64, 64])
The output image(s) have dtype: torch.uint8
For image format `bag-of-units`:
The output image type is: &amp;lt;class 'tuple'&amp;gt;
The output image(s) have shape: [torch.Size([3, 3, 64, 64]), torch.Size([3, 3, 64, 64])]
The output image(s) have dtype: [torch.uint8, torch.uint8]
For image format `bag-of-units-first`:
The output image type is: &amp;lt;class 'tuple'&amp;gt;
The output image(s) have shape: [torch.Size([3, 64, 64]), torch.Size([3, 64, 64])]
The output image(s) have dtype: [torch.uint8, torch.uint8]
&lt;/code>&lt;/pre>
&lt;h3 id="additional-return-options-for-starcraftimage">Additional return options for StarCraftImage&lt;/h3>
&lt;p>In addition to the image formats, there are also additional return options that can be set by the user:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;code>return_label&lt;/code>: If set to &lt;code>True&lt;/code>, this returns the classification label for the window which corresponds to the &lt;code>(map_name, did_window_happen_in_first_half_of_replay)&lt;/code>.
This also requires specifying &lt;code>label_kind&lt;/code> which can either be set to &lt;code>14 class&lt;/code> (which includes all 7 maps) or &lt;code>10 class&lt;/code> (which only includes samples from the five most popular maps).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>return_dict&lt;/code>: If set to &lt;code>True&lt;/code>, this returns a dictionary which includes metadata related to that sample.
The metadata included in the dictionary is: the map state for each player (&lt;code>player_X_is_seen&lt;/code>, &lt;code>player_X_is_visible&lt;/code>,
&lt;code>player_X_creep&lt;/code>), replay metadata (e.g., number of windows, player races, map name, player tabular information), terrain information (&lt;code>pathing grid&lt;/code>, &lt;code>placement_grid&lt;/code>, &lt;code>terrain_height&lt;/code>), and a vector of player tabular information (&lt;code>player_X_tabular&lt;/code>).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Adding return_label=True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">scimage&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StarCraftImage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">return_label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">label_kind&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;14-class&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">use_metadata_cache&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">verbose&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;There are now &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> outputs, and the output label is: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>There are now 2 outputs, and the output label is: 5
&lt;/code>&lt;/pre>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Adding return_dict=True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">scimage&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StarCraftImage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data_dir&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">return_dict&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">return_label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">label_kind&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;14-class&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">use_metadata_cache&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">verbose&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scimage&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s1">&amp;#39;There are now &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s1"> outputs, and the output dict has keys: &lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">keys&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">And entries:&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">pprint&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pprint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span> &lt;span class="c1"># pretty prints the image metadata&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>There are now 3 outputs, and the output dict has keys:
dict_keys(['player_1_is_visible', 'player_1_is_seen', 'player_1_creep', 'player_2_is_visible', 'player_2_is_seen', 'player_2_creep', 'pathing_grid', 'placement_grid', 'terrain_height', 'player_1_tabular', 'player_2_tabular', 'metadata'])
And entries:
{'metadata': {'10_class_data_split': 'train',
'14_class_data_split': 'train',
'game_duration_seconds': 765.8123779296875,
'global_idx': 3050830,
'map_name': 'Ascension to Aiur LE',
'num_windows': 67,
'player_1_apm': 228,
'player_1_army_count': 0,
'player_1_food_army': 0,
'player_1_food_cap': 15,
'player_1_food_used': 15,
'player_1_food_workers': 14,
'player_1_idle_worker_count': 0,
'player_1_larva_count': 0,
'player_1_minerals': 45,
'player_1_mmr': 5597,
'player_1_race': 'Protoss',
'player_1_vespene': 0,
'player_1_warp_gate_count': 0,
'player_2_apm': 277,
'player_2_army_count': 0,
'player_2_food_army': 0,
'player_2_food_cap': 14,
'player_2_food_used': 14,
'player_2_food_workers': 14,
'player_2_idle_worker_count': 0,
'player_2_larva_count': 2,
'player_2_minerals': 100,
'player_2_mmr': 5518,
'player_2_race': 'Zerg',
'player_2_vespene': 0,
'player_2_warp_gate_count': 0,
'replay_name': 'a8d0bfbb370650d351334f9d253655a28b670082f2b908bd22b19bb880306329',
'target_id': 5,
'window_idx': 1,
'winning_player_id': 2},
'pathing_grid': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'placement_grid': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'player_1_creep': tensor([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=torch.uint8),
'player_1_is_seen': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, True, True, ..., False, False, False],
[False, False, True, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'player_1_is_visible': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, True, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'player_1_tabular': tensor([45, 0, 15, 15, 0, 14, 0, 0, 0, 0]),
'player_2_creep': tensor([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=torch.uint8),
'player_2_is_seen': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'player_2_is_visible': tensor([[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
...,
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False],
[False, False, False, ..., False, False, False]]),
'player_2_tabular': tensor([100, 0, 14, 14, 0, 14, 0, 0, 0, 2]),
'terrain_height': tensor([[127, 127, 127, ..., 127, 127, 127],
[127, 127, 127, ..., 127, 127, 127],
[127, 127, 133, ..., 127, 127, 127],
...,
[138, 138, 140, ..., 127, 127, 127],
[138, 138, 138, ..., 127, 127, 127],
[138, 138, 133, ..., 127, 127, 127]], dtype=torch.uint8)}
&lt;/code>&lt;/pre></description></item></channel></rss>