質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1521閲覧

tf.data.Datasetバッチサイズが指定と異なる

iwase13

総合スコア11

DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/09/10 02:13

tf.data.Dataset.from_tensor_slices().batch()
を用いてdatasetとしてデータをバッチ化しようとしています。
.batch()の引数で指定したバッチサイズが出力と一致しません。

tensorflow

1import tensorflow as tf 2 3BATCH_SIZES = [256, 128, 96, 64, 48, 32, 16] 4 5sliced = tf.data.Dataset.from_tensor_slices(tf.range(60000)) 6for i in BATCH_SIZES: 7 dataset = sliced.batch(i) 8 for item in dataset: 9 item 10 print(item.shape) 11 12 13(96,) 14(96,) 15(96,) 16(32,) 17(48,) 18(32,) 19(16,)

バッチサイズ指定がが96以上では、バッチサイズが96。
バッチサイズ指定がが64では、バッチサイズが32。
バッチサイズ指定がが48以下では、バッチサイズが指定通り。
バッチサイズの上限が96でも48でもないし不可解。

ドキュメントではバッチサイズ指定は32ビットまで可能な筈。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

データサイズである60000が、指定のバッチサイズで割り切れるかどうかで挙動が変わっています。

以下の簡単な実験からも、整合する状況であることが確認できるかと思います。
(バッチサイズ96以上: 0または96なので最後のバッチサイズは必ず96、バッチサイズ64: 最後のバッチサイズは32、残り: キレイに割り切れるため指定サイズのバッチ)

In [1]: [(i, 60000 % i) for i in [256, 128, 96, 64, 48, 32, 16]] Out[1]: [(256, 96), (128, 96), (96, 0), (64, 32), (48, 0), (32, 0), (16, 0)]

もし末尾の余ったデータを破棄したい場合、batch()drop_remainder=True を設定する必要があります。
https://www.tensorflow.org/api_docs/python/tf/data/Dataset#batch

投稿2021/09/10 09:39

lazykyama

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iwase13

2021/09/10 14:34

明確なご回答ありがとうございました。 Forループでの最後の割り切れなかったバッチ数が出力されたという事ですね。 Forの途中でも指定したバッチ数になっていないのではないかと勘違いしていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問