tensorflow(6) mnist.train.next_batch() 関数解析
2022-02-11 13:34:57
データを1バッチずつ生成する必要があるtensorflowのfeed_dictの原理。
1. データセットクラス
データ処理部分をクラスとして記述し、init関数でいくつかのパラメータを定義します。
class DataSet(object):
def __init__(self,
images,
labels,.....)
self._images = images
self._labels = labels
self._epochs_completed = 0 # how many epochs have been gone through
self._index_in_epoch = 0 # index in an epoch
self._num_examples # is the total number of samples in the training data
2. next_batch機能
next_batch関数の各呼び出しが最後の位置をまだ覚えていることをどのように保証しますか? tensorflowソースコードはデータセット入力をクラスとして書き、self._index_in_epochは最後の位置を覚えているクラス変数と等価です。
次の関数は、大きく3つの部分に分かれています。
最初のエポックをどうするか。
各エポックの終わりが次のエポックの始まりに合流するのをどうするか。
非最初のエポック& 非終了をどうするか。
このように分ける主な理由は、各エポックの最初に、インデックスがシャッフルされるからである。
def next_batch(self, batch_size, fake_data=False, shuffle=True):
start = self._index_in_epoch #self._index_in_epoch All calls, total number of samples used, equivalent to a global variable #start The first batch is 0, the rest is the same as self._index_in_epoch, and if more than one epoch is used. The rest is the same as self._index_in_epoch, and if it exceeds one epoch, it is reassigned below.
# Shuffle for the first epoch The first epoch needs to be shuffled
if self._epochs_completed == 0 and start == 0 and shuffle:
perm0 = numpy.array(self._num_examples) # Generate an np.array of all sample lengths
numpy.random.shuffle(perm0)
self._images = self.images[perm0]
self._labels = self.labels[perm0]
# Go to the next epoch
if start + batch_size > self._num_examples: # End of epoch and beginning of next epoch
# Finished epoch
self._epochs_completed += 1
# Get the rest examples in this epoch
rest_num_examples = self._num_examples - start # Last not enough for a batch and a few left
images_rest_part = self._images[start:self._num_examples]
labels_rest_part = self._labels[start:self._num_examples]
# Shuffle the data
if shuffle:
perm = numpy.range(self._num_examples)
numpy.random.shuffle(perm)
self._images = self.images[perm]
self._labels = self.labels[perm]
# Start next epoch
start = 0
self._index_in_epoch = batch_size - rest_num_examples
end = self._index_in_epoch
images_new_part = self._images[start:end]
labels_new_part = self._labels[start:end]
return numpy.concatenate((images_rest_part, images_new_part), axis=0) , numpy.concatenate((labels_rest_part, labels_new_part), axis=0)
else: # Except for the first epoch, and the beginning of each epoch, the rest of the middle batch is handled
self._index_in_epoch += batch_size # start = index_in_epoch
end = self._index_in_epoch # end is simple, it's index_in_epoch plus batch_size
return self._images[start:end], self._labels[start:end] # in data x,y
関連
-
[解決済み] tf.train.shuffle_batchはどのように動作するのですか?
-
[解決済み] 入力パイプラインは、keras.utils.Sequenceオブジェクトまたはtf.data.Datasetを使用しますか?
-
[解決済み] WSL2- $nvidia-smi コマンドが実行されない
-
解決方法 TensorFlowのネイティブランタイムのロードに失敗しました。
-
TensorFlow cnn-cifar10 サンプルコード詳細
-
[Untitled] AttributeError: module 'tensorflow' has no attribute 'placeholder' error resolved.
-
Tensorflowシリーズ:tf.contrib.layers.batch_norm
-
Tensorflowのエラーです。TypeError: 'NoneType'オブジェクトは呼び出し可能ではない
-
TensorFlow入門学習(機械・アルゴリズムに選択を手伝ってもらう)
-
anacondaでtensorflow-gpuをインストールする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Tensorflow: tf.expand_dimsはいつ使う?
-
[解決済み】Tensorflowは、Path変数が設定された状態でインストールされているにもかかわらず、「cudart64_90.dll」を見つけることができません。
-
Tensorflowのエラー.TypeError: ハッシュ化できない型:'numpy.ndarray'
-
[解決済み] tensorflowの名前スコープと変数スコープの違いは何ですか?
-
[解決済み] ImportError: libcudart.so.8.0: 共有オブジェクト・ファイルを開くことができません。そのようなファイルまたはディレクトリがありません
-
[解決済み] ModuleNotFoundError: tensorboard' という名前のモジュールはありません。
-
ImportError: cannot import name 'get_config' How to solve this problem?
-
AttributeError: 'list' オブジェクトには 'value' という属性がありません。
-
Python tensorflow ModuleNotFoundError: tensorflow.contrib'という名前のモジュールはありません。
-
pycharm using TensorFlow, keras error: modulenotfounderror: no module named tensorflow