CNNs」を詳細に解説したものです。解説の利便性によりコードの部分の位置関係は変更してありますが、内容に変化はありません。実際に動作するデモはこちらで見られます。読みこむ元データ画像1つには合計65,000枚の画像が含まれます。モデルのトレーニングには最大55,000枚の画像を使用し、モデルのパフォーマンスをテストするために使用できる10,000枚の画像を保存します。今回のケースでは横1行が学習データ1枚の全画素(28x28=784)となっている。これはずっと簡単になります。今のところ、データの取得と操作は手動で行います。MNISTのスプリットイメージ(上記で定義した28x28ピクセルを画素とした時に各画素に呼応する色彩の値)を要求します。別オリジンから読み込んだ画像などのリソースを文書内で利用する際のルールを指定します。画像の表示幅ではなく、画像のデータ上の本当の幅(784px)を画像の特性値とする。画像の表示高ではなく、画像のデータ上の本当の高さ(65000px)を画像の特性値とする。ArrayBuffer(n)は8bit(=1byte)がn個入るバッファ領域が用意する。byteの容量のバッファを用意。具体的には203,840,000byte(だいたい200MegaByte)のバッファ領域が確保される。バッファを確保した時点では全ての要素は0が入っている状態。呼応して1次元配列で保存されている。この配列のデータサイズ(確保したバッファ領域と等しい)。lengthの幅をデータ保存領域として確保することを意味する。canvasの左上から(dx,dy)の点を起点として幅dw高さdhの領域に描画することを意味する。この場合は、元画像データの上から数えて、当該のチャンクに相当する部分の画像部分をcanvasの左上を起点として貼る行為。canvasに描画した1チャンク分(=画像5000枚分)のイメージデータを丸ごと取得しimageDataに格納する。4種類の情報を各1byteで表現した4バイトデータである。いえば、1byteは2の8乗であり、0から255までの数字で表現される。取り込んだ画像データの画素はモノクロなので「赤・緑・青」の3チャンネルは同じ数字であるので、赤の情報だけ4つ飛ばしで読み込む。読んだ値は0から255までの数値なので、0から1に収めるために255で割っておく。して、dataBytesViewと言う配列には65000枚の全画像の全画素の赤の濃さが0から1までの数値で収まった状態。この650000要素からなるデータラベルの入った配列をdatasetLabelsとする。tf.util.createShuffledIndices(n)は0から(n-1)までの整数をシャッフルして並べた32bit配列を返す関数。y)は配列のインデックス番号(0で始まる)で数えてx番目からy番目までを切り抜いた配列を返す関数。コンストラクタメソッドは、クラス内で作成されたオブジェクトを作成および初期化するための特別なメソッドです。MnistDataというクラスの中でオブジェクトを作成し初期化する。トレーニングセットから画像とそのラベルのランダムなバッチを返します。テストセットから画像とそのラベルのランダムなバッチを返します。y)でxをArrayのy番目要素の位置に差し込む。IMAGE_SIZE」番目要素として上記で切り出した画像の784画素のデータを流し込む。この時点でbatchImagesArrayという配列は5000x784個の要素を格納する1次元配列を形成していく。上記と同様にラベルについて1次元配列を形成していく。下記により画像の画素情報が格納された5000行784列の二次元テンソルが生成される。下記により画像のラベル情報が格納された5000行10列の二次元テンソルが生成される。上記で得られた2つのテンソルを格納したオブジェクトを返す。上記で定義したクラス「MnistData」を取り込み。結果としてMnistData内でload()関数が実行されてArrayBufferに学習データおよびテストデータの生データがdataとして格納されている状態。labels}形式のオブジェクトはまだ生成されていない。TF-VISで学習データ画像の例を表示する画面の枠組みを決める。10]}という2種類のshapeのテンソルが格納されたオブジェクトを得る。784]という「20行784列」を意味する値を持っているのでexamples.xs.shape[0]の値は「20」となる。10]という「20行10列」を意味する値を持っているのでexamples.labels.shape[0]の値も「20」となる。1]の形のテンソルに再形成する。アウトコンボリューションニューラルネットワークの最初の層では、入力形状を指定する必要があります。次に、このレイヤで行われる畳み込み演算のためのいくつかのパラメータを指定します。定義されている場合、このレイヤの前に挿入する入力レイヤを作成するために使用されます。inputShapeとbatchInputShapeの両方が定義されている場合は、batchInputShapeが使用されます。この引数は入力レイヤ(モデルの最初のレイヤ)にのみ適用できます。畳み込みウィンドウの大きさ。kernelSizeが数値の場合、たたみ込みウィンドウは正方形になります。出力空間の次元数(すなわち、畳み込みにおけるフィルタの数)。各次元における畳み込みの進歩。ストライドが数値の場合、両方の次元のストライドは等しくなります。レイヤーの活性化関数の種類。畳み込みカーネル重み行列の初期化子。MaxPoolingレイヤーは、平均化の代わりに領域内の最大値を使用する一種のダウンサンプリングとして機能します。各次元で縮小する倍率[垂直、水平]。整数または2つの整数の配列が必要です。プールウィンドウの各次元におけるストライドのサイズ。整数または2つの整数の配列が必要です。整数、2整数のタプル、またはNone。maxPoolingスタックを繰り返します。コンボリューションにはもっとフィルタがあることに注意してください。これで、2Dフィルタからの出力を1Dベクトルにフラット化して、最後のレイヤーに入力できるようにしました。これは、高次元のデータを最終的な分類出力レイヤに送るときに一般的な方法です。学習データの作成時にはバッチサイズを5000にして作成したが、学習時は512(2の累乗にするのが慣習)で行う。1])にreshapeする。勾配更新ごとのサンプル数。指定しない場合は、デフォルトの32になります。各エポックの終わりに損失とモデルメトリックを評価するためのデータ。モデルはこのデータについてトレーニングされません。これはタプル[xVal、yVal]またはタプル[xVal、yVal、valSampleWeights]です。モデルはこのデータについてトレーニングされません。validationDataはvalidationSplitをオーバーライドします。トレーニングデータ配列を反復する回数。各エポックの前にトレーニングデータをシャッフルするかどうか。stepsPerEpochがnullでない場合は無効です。トレーニング中に呼び出されるコールバックのリスト。onTrainBegin、onTrainEnd、onEpochBegin、onEpochEnd、onBatchBegin、onBatchEndの1つ以上のフィールドで構成できます。読みこむ元データ画像1つには合計65,000枚の画像が含まれます。モデルのトレーニングには最大55,000枚の画像を使用し、モデルのパフォーマンスをテストするために使用できる10,000枚の画像を保存します。今回のケースでは横1行が学習データ1枚の全画素(28x28=784)となっている。これはずっと簡単になります。今のところ、データの取得と操作は手動で行います。MNISTのスプリットイメージ(上記で定義した28x28ピクセルを画素とした時に各画素に呼応する色彩の値)を要求します。別オリジンから読み込んだ画像などのリソースを文書内で利用する際のルールを指定します。画像の表示幅ではなく、画像のデータ上の本当の幅(784px)を画像の特性値とする。画像の表示高ではなく、画像のデータ上の本当の高さ(65000px)を画像の特性値とする。ArrayBuffer(n)は8bit(=1byte)がn個入るバッファ領域が用意する。byteの容量のバッファを用意。具体的には203,840,000byte(だいたい200MegaByte)のバッファ領域が確保される。バッファを確保した時点では全ての要素は0が入っている状態。呼応して1次元配列で保存されている。この配列のデータサイズ(確保したバッファ領域と等しい)。lengthの幅をデータ保存領域として確保することを意味する。canvasの左上から(dx,dy)の点を起点として幅dw高さdhの領域に描画することを意味する。この場合は、元画像データの上から数えて、当該のチャンクに相当する部分の画像部分をcanvasの左上を起点として貼る行為。canvasに描画した1チャンク分(=画像5000枚分)のイメージデータを丸ごと取得しimageDataに格納する。4種類の情報を各1byteで表現した4バイトデータである。いえば、1byteは2の8乗であり、0から255までの数字で表現される。取り込んだ画像データの画素はモノクロなので「赤・緑・青」の3チャンネルは同じ数字であるので、赤の情報だけ4つ飛ばしで読み込む。読んだ値は0から255までの数値なので、0から1に収めるために255で割っておく。して、dataBytesViewと言う配列には65000枚の全画像の全画素の赤の濃さが0から1までの数値で収まった状態。この650000要素からなるデータラベルの入った配列をdatasetLabelsとする。tf.util.createShuffledIndices(n)は0から(n-1)までの整数をシャッフルして並べた32bit配列を返す関数。y)は配列のインデックス番号(0で始まる)で数えてx番目からy番目までを切り抜いた配列を返す関数。コンストラクタメソッドは、クラス内で作成されたオブジェクトを作成および初期化するための特別なメソッドです。MnistDataというクラスの中でオブジェクトを作成し初期化する。トレーニングセットから画像とそのラベルのランダムなバッチを返します。テストセットから画像とそのラベルのランダムなバッチを返します。y)でxをArrayのy番目要素の位置に差し込む。IMAGE_SIZE」番目要素として上記で切り出した画像の784画素のデータを流し込む。この時点でbatchImagesArrayという配列は5000x784個の要素を格納する1次元配列を形成していく。上記と同様にラベルについて1次元配列を形成していく。下記により画像の画素情報が格納された5000行784列の二次元テンソルが生成される。下記により画像のラベル情報が格納された5000行10列の二次元テンソルが生成される。上記で得られた2つのテンソルを格納したオブジェクトを返す。上記で定義したクラス「MnistData」を取り込み。結果としてMnistData内でload()関数が実行されてArrayBufferに学習データおよびテストデータの生データがdataとして格納されている状態。labels}形式のオブジェクトはまだ生成されていない。TF-VISで学習データ画像の例を表示する画面の枠組みを決める。10]}という2種類のshapeのテンソルが格納されたオブジェクトを得る。784]という「20行784列」を意味する値を持っているのでexamples.xs.shape[0]の値は「20」となる。10]という「20行10列」を意味する値を持っているのでexamples.labels.shape[0]の値も「20」となる。1]の形のテンソルに再形成する。アウトコンボリューションニューラルネットワークの最初の層では、入力形状を指定する必要があります。次に、このレイヤで行われる畳み込み演算のためのいくつかのパラメータを指定します。定義されている場合、このレイヤの前に挿入する入力レイヤを作成するために使用されます。inputShapeとbatchInputShapeの両方が定義されている場合は、batchInputShapeが使用されます。この引数は入力レイヤ(モデルの最初のレイヤ)にのみ適用できます。畳み込みウィンドウの大きさ。kernelSizeが数値の場合、たたみ込みウィンドウは正方形になります。出力空間の次元数(すなわち、畳み込みにおけるフィルタの数)。各次元における畳み込みの進歩。ストライドが数値の場合、両方の次元のストライドは等しくなります。レイヤーの活性化関数の種類。畳み込みカーネル重み行列の初期化子。MaxPoolingレイヤーは、平均化の代わりに領域内の最大値を使用する一種のダウンサンプリングとして機能します。各次元で縮小する倍率[垂直、水平]。整数または2つの整数の配列が必要です。プールウィンドウの各次元におけるストライドのサイズ。整数または2つの整数の配列が必要です。整数、2整数のタプル、またはNone。maxPoolingスタックを繰り返します。コンボリューションにはもっとフィルタがあることに注意してください。これで、2Dフィルタからの出力を1Dベクトルにフラット化して、最後のレイヤーに入力できるようにしました。これは、高次元のデータを最終的な分類出力レイヤに送るときに一般的な方法です。学習データの作成時にはバッチサイズを5000にして作成したが、学習時は512(2の累乗にするのが慣習)で行う。1])にreshapeする。勾配更新ごとのサンプル数。指定しない場合は、デフォルトの32になります。各エポックの終わりに損失とモデルメトリックを評価するためのデータ。モデルはこのデータについてトレーニングされません。これはタプル[xVal、yVal]またはタプル[xVal、yVal、valSampleWeights]です。モデルはこのデータについてトレーニングされません。validationDataはvalidationSplitをオーバーライドします。トレーニングデータ配列を反復する回数。各エポックの前にトレーニングデータをシャッフルするかどうか。stepsPerEpochがnullでない場合は無効です。トレーニング中に呼び出されるコールバックのリスト。onTrainBegin、onTrainEnd、onEpochBegin、onEpochEnd、onBatchBegin、onBatchEndの1つ以上のフィールドで構成できます。Ltd.EnglishEnglish。