質問するログイン新規登録

Q&A

0回答

493閲覧

batch(32)はデータ配列に対してどのようなことを行っているのでしょうか。

dendenmushi

総合スコア98

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

0グッド

0クリップ

投稿2019/03/16 14:46

0

0

前提・実現したいこと

csvデータをpythonでライブラリnumpyやテンソルフローデータセットなどでパースしたい。
例えばbatch(4)であれば4つずつデータを分けていくはずなのですが、なぜbatch(32)としているのか、またそれをコメントアウトすることでなぜ以下のようなエラーが出るのか理由が明確にわからなくアドバイス頂けないでしょうか。

発生している問題・エラーメッセージ

tf.Tensor(7.7, shape=(), dtype=float32) tf.Tensor(2.6, shape=(), dtype=float32) tf.Tensor(2.3, shape=(), dtype=float32) --------------------------------------------------------------------------- InvalidArgumentError Traceback (most recent call last) <ipython-input-287-3286b6a94e0f> in <module>() 3 print(features[1]) 4 print(features[3]) ----> 5 print(label[0]) C:\ProgramData\Anaconda3\envs\tensorflow_hajimete\lib\site-packages\tensorflow\python\ops\array_ops.py in _slice_helper(tensor, slice_spec, var) 523 ellipsis_mask=ellipsis_mask, 524 var=var, --> 525 name=name) 526 527 C:\ProgramData\Anaconda3\envs\tensorflow_hajimete\lib\site-packages\tensorflow\python\ops\array_ops.py in strided_slice(input_, begin, end, strides, begin_mask, end_mask, ellipsis_mask, new_axis_mask, shrink_axis_mask, var, name) 689 ellipsis_mask=ellipsis_mask, 690 new_axis_mask=new_axis_mask, --> 691 shrink_axis_mask=shrink_axis_mask) 692 693 parent_name = name C:\ProgramData\Anaconda3\envs\tensorflow_hajimete\lib\site-packages\tensorflow\python\ops\gen_array_ops.py in strided_slice(input, begin, end, strides, begin_mask, end_mask, ellipsis_mask, new_axis_mask, shrink_axis_mask, name) 10555 else: 10556 message = e.message > 10557 _six.raise_from(_core._status_to_exception(e.code, message), None) 10558 10559 C:\ProgramData\Anaconda3\envs\tensorflow_hajimete\lib\site-packages\six.py in raise_from(value, from_value) InvalidArgumentError: Index out of range using input dim 0; input has only 0 dims [Op:StridedSlice] name: strided_slice/

該当のソースコード

python

1#IRIS prediction by TensorFlow 2#https://www.tensorflow.org/get_started/eager 3from __future__ import absolute_import, division, print_function 4 5import os 6import matplotlib.pyplot as plt 7 8import tensorflow as tf 9import tensorflow.contrib.eager as tfe 10 11 12## TensorFlowのバージョンチェック 13tf.enable_eager_execution() 14 15print("TensorFlow version: {}".format(tf.VERSION)) 16print("Eager execution: {}".format(tf.executing_eagerly())) 17 18 19 20## 訓練データ(CSV)を指定URLからダウンロード 21train_dataset_url = "http://download.tensorflow.org/data/iris_training.csv" 22 23train_dataset_fp = tf.keras.utils.get_file(fname=os.path.basename(train_dataset_url),origin=train_dataset_url) 24 25print("Local copy of the dataset file: {}".format(train_dataset_fp)) 26 27 28## ダウンロードしたデータを整形 29def parse_csv(line): 30 example_defaults = [[0.], [0.], [0.], [0.], [0]] # sets field types 31 parsed_line = tf.decode_csv(line, example_defaults) 32 # First 4 fields are features, combine into single tensor 33 features = tf.reshape(parsed_line[:-1], shape=(4,)) 34 # Last field is the label 35 label = tf.reshape(parsed_line[-1], shape=()) 36 return features, label 37 38 39## Create the training tf.data.Dataset 40train_dataset = tf.data.TextLineDataset(train_dataset_fp) 41train_dataset = train_dataset.skip(1) # skip the first header row 42train_dataset = train_dataset.map(parse_csv) # parse each row 43train_dataset = train_dataset.shuffle(buffer_size=1000) # randomize 44#train_dataset = train_dataset.batch(32) 45 46## View a single example entry from a batch 47features, label = tfe.Iterator(train_dataset).next() 48print(features[0]) 49print(features[1]) 50print(features[3]) 51print(label[0])

試したこと

.batch(32)の行のコメントアウトをはずした場合の出力は以下でした。

tf.Tensor([6.7 3.1 5.6 2.4], shape=(4,), dtype=float32) tf.Tensor([5.4 3.9 1.3 0.4], shape=(4,), dtype=float32) tf.Tensor([4.8 3. 1.4 0.3], shape=(4,), dtype=float32) tf.Tensor(2, shape=(), dtype=int32)

また、以下別サイト説明からも32区切りになるとは思うのですが、なぜ32なのか疑問です。
ここでは4つの葉の長さとそのラベルとして1つを足した5つのデータごとに区切り1つのレコードになっているはずです。
(別サイト説明)
イメージ説明

補足情報(FW/ツールのバージョンなど)

win10
python 3.6
TensorFlow 1.12.0

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問