前提・実現したいこと
3万枚の画像をnumpy配列に変換するところでメモリエラーが起きてしまうため、tfrecordsを使って動かしてみることにしました。
以下のリンクを参考に、訓練画像の用意をしているところでエラーが出てしまいました。
お手数をお掛けしますが、エラー解消方法についてアドバイスをいただけますと幸いです。どうぞよろしくお願いいたします。
https://taka5hi.hatenablog.com/entry/2019/01/13/120145
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-5-6f952036eb77> in <module> 37 # 訓練データの加工と保存 38 #train_labels = to_categorical(y_train) ---> 39 save_to_tfrecord(x_train, "train.tfrecord")# train_labels, <ipython-input-5-6f952036eb77> in save_to_tfrecord(datas, filename) 5 with tf.python_io.TFRecordWriter(filename) as w: 6 for data in zip(datas):#, labels):# , label ----> 7 data = data.reshape(-1).tobytes() 8 features = tf.train.Features(feature={ 9 'data': tf.train.Feature(bytes_list=tf.train.BytesList(value=[data]))}) AttributeError: 'tuple' object has no attribute 'reshape'
該当のソースコード
from __future__ import absolute_import from __future__ import division from __future__ import print_function from keras.layers import Lambda, Input, Dense from keras.models import Model from keras.models import Sequential, model_from_json from keras.losses import mse, binary_crossentropy from keras.layers import Conv2D, Flatten, Lambda from keras.layers import Reshape, Conv2DTranspose from keras.utils import plot_model, np_utils from keras.utils import plot_model from keras.callbacks import Callback, EarlyStopping, ModelCheckpoint,CSVLogger from keras import optimizers from keras import backend as K from keras.preprocessing.image import array_to_img, img_to_array,load_img #from keras.preprocessing.image import ImageDataGenerator import numpy as np import matplotlib.pyplot as plt import argparse import os import re import glob import random as rn import tensorflow as tf #import cv2 #import easydict from PIL import Image #from google.colab.patches import cv2_imshow import warnings warnings.filterwarnings('ignore') %matplotlib inline BATCH_SIZE = 500 EPOCHS = 5 def save_to_tfrecord(datas, filename):# labels, with tf.python_io.TFRecordWriter(filename) as w: for data in zip(datas):#, labels):# , label data = data.reshape(-1).tobytes() features = tf.train.Features(feature={ 'data': tf.train.Feature(bytes_list=tf.train.BytesList(value=[data]))}) #'label': tf.train.Feature(int64_list=tf.train.Int64List(value=label.astype(dtype='int64'))) example = tf.train.Example(features=features) w.write(example.SerializeToString()) # MNIST データのロード #(x_train, y_train), _ = mnist.load_data() #original dataset #train filenames = glob.glob("./train/NORMAL_train_dataset/*.jpeg") image_list = [] for filename in filenames: if filename == "Thumbs.db": continue image_value = np.array(Image.open(filename)) image_list.append(image_value.reshape(1, image_value.size)) x_train = np.asarray(image_list) print(x_train.shape) # 訓練データの加工と保存 #train_labels = to_categorical(y_train) save_to_tfrecord(x_train, "train.tfrecord")# train_labels,
補足情報(FW/ツールのバージョンなど)
ラベル無しのオリジナルデータセットを利用予定です。
ubuntuで、anacondaの仮想環境下で実行しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/17 14:07
2019/05/19 12:28