ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

クラウドへの深層学習データのアップロード

この例では、データを Amazon S3 バケットにアップロードする方法を説明します。深層学習における学習をクラウドで実行する前に、データをクラウドにアップロードする必要があります。この例では、CIFAR-10 データセットをコンピューターにダウンロードし、後で MATLAB で使用するために、そのデータを Amazon S3 バケットにアップロードする方法を示します。CIFAR-10 データセットは、ラベル付けされたイメージ データセットで、イメージ分類アルゴリズムのベンチマーク用によく使用されます。この例を実行するには、Amazon Web Services (AWS) アカウントへのアクセスが必要です。このデータセットを Amazon S3 にアップロードすると、並列およびクラウドでの深層学習のすべての例を試すことができます。

ローカル マシンへの CIFAR-10 のダウンロード

補助関数を使用して CIFAR-10 データセットをローカル マシンにダウンロードします。データセットのダウンロード元の URL とダウンロード先のローカル ディレクトリを指定します。次のコードは、データセットのすべてのイメージを格納するフォルダーを現在のディレクトリに作成します。

url = 'https://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz';
directory = pwd;
getCIFAR10Data(url,directory);

Amazon S3 バケットへのローカル データセットのアップロード

クラウドでデータを使用するために、Amazon S3 にアップロードしてから、データストアを使用して、クラスター内のワーカーから S3 のデータにアクセスできます。CIFAR-10 をローカル マシンから Amazon S3 バケットにアップロードするには、以下の手順に従います。

1.Amazon S3 とのファイル転送を効率的に行うために、https://aws.amazon.com/cli/ から AWS Command Line Interface ツールをダウンロードしてインストールします。

2.バケットの AWS アクセス キー ID、シークレット アクセス キー、およびリージョンをシステム環境変数として指定します。キーの取得については、AWS アカウント管理者にお問い合わせください。

たとえば、Linux、macOS、または UNIX の場合:

export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"
export AWS_REGION="us-east-1"

Windows の場合:

set AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"
set AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"
set AWS_REGION="us-east-1"

これらの環境変数を常に設定しておくには、それらの環境変数をユーザー環境またはシステム環境に設定します。

3.データ用のバケットを作成します。AWS S3 の Web ページまたは次のようなコマンドを使用します。

aws s3 mb s3://mynewbucket

4.次のようなコマンドを使用してデータをアップロードします。

aws s3 cp mylocaldatapath s3://mynewbucket --recursive

以下に例を示します。

aws s3 cp path/to/CIFAR10/in/the/local/machine s3://MyExampleCloudData/cifar10/ --recursive

5.クラウド クラスターを作成した後、AWS 資格情報をクラスター ワーカーにコピーするために、MATLAB で [並列]、[クラスター プロファイルの管理] を選択します。クラスター プロファイル マネージャーで、クラウド クラスター プロファイルを選択します。EnvironmentVariables プロパティまでスクロールし、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、および AWS_REGION を追加します。

MATLAB でのデータセットの使用

データを Amazon S3 に格納した後、データストアを使用してクラスター ワーカーからデータにアクセスできます。S3 バケットの URL を指すデータストアを作成するだけです。たとえば、次のサンプル コードは imageDatastore を使用して S3 バケットにアクセスする方法を示しています。's3://MyExampleCloudData/cifar10/train' を自分の S3 バケットの URL に置き換えます。

imds = imageDatastore('s3://MyExampleCloudData/cifar10/train', ...
 'IncludeSubfolders',true, ...
 'LabelSource','foldernames');

さまざまなユース ケースにおいて Amazon S3 で CIFAR-10 を使用する方法を示している、並列およびクラウドでの深層学習のすべての例を試すことができます。

CIFAR-10 をダウンロードする補助関数の定義

CIFAR-10 データセットをダウンロードする補助関数を作成します。この関数は、ローカル フォルダーを作成し、CIFAR-10 イメージをそれらのフォルダーに保存します。

function getCIFAR10Data(url,directory)
% This a helper function to obtain CIFAR-10 and store it locally.
% The function copies the training and test data sets into a folder called "cifar10" in
% the provided directory.

% Download the MAT files containing the data set in the given
% directory. Use the helperCIFAR10Data helper function for this.
helperCIFAR10Data.download(url,directory);

% Create the training and test directories where the images will be stored.
outputDirectory = fullfile(directory,'cifar10');
trainDirectory = fullfile(outputDirectory,'train');
testDirectory = fullfile(outputDirectory,'test');

mkdir(outputDirectory);
mkdir(trainDirectory);
mkdir(testDirectory);

% Create subdirectories for each of the category folders.
labelNames = {'airplane','automobile','bird','cat','deer','dog', ...
    'frog','horse','ship','truck'};
makeDirectories(trainDirectory,labelNames);
makeDirectories(testDirectory,labelNames);

% The helper function creates several MAT files containing the images. Process
% them and save the images into local folders.
for i = 1:5
    fileToLoad = fullfile('cifar-10-batches-mat', ...
        ['data_batch_' num2str(i) '.mat']);
    saveImagesToFolders(fileToLoad,trainDirectory,labelNames,(i-1)*10000);
end
fileToLoad = fullfile('cifar-10-batches-mat','test_batch.mat');
saveImagesToFolders(fileToLoad,testDirectory,labelNames,0);

    function makeDirectories(outputPath,directoryNames)
        % Creates directories in outputPath with the names in
        % directoryNames.
        for i = 1:numel(directoryNames)
            mkdir(fullfile(outputPath,directoryNames{i}));
        end
    end

    function saveImagesToFolders(inputFilePath,outputPath,labelNames,nameOffset)
        % Loads a MAT file containing images from the data set and saves them
        % to the corresponding category folder.
        % Load the MAT file into variables.
        S = load(inputFilePath);
        data = S.data;
        labels = S.labels;
        % The image data in the MAT files needs to be processed with
        % transpositions, reshaping and permutations.
        data = data';
        data = reshape(data, 32,32,3,[]);
        data = permute(data, [2 1 3 4]);
        % Iterate through all of the images and save them in the directory.
        % Use a name based on the index of the image.
        for i = 1:size(data,4)
            outputFilename = fullfile(outputPath,labelNames{labels(i)+1}, ...
                ['image' num2str(i + nameOffset) '.png']);
            imwrite(data(:,:,:,i),outputFilename);
        end
    end
end
Downloading CIFAR-10 data set (175 MB). This can take a while...

参考

関連するトピック