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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2012閲覧

keras astypeエラーについて

22Go

総合スコア55

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/08 11:21

編集2019/06/08 11:23

python

1# coding:utf-8 2 3import keras 4from keras.utils import np_utils 5from keras.layers.convolutional import Conv2D, MaxPooling2D 6from keras.models import Sequential 7from keras.layers.core import Dense, Dropout, Activation, Flatten 8from keras.preprocessing.image import array_to_img, img_to_array, list_pictures, load_img 9import numpy as np 10import pandas as pd 11from sklearn.model_selection import train_test_split 12import matplotlib.pyplot as plt 13from keras.preprocessing.image import ImageDataGenerator 14from keras.preprocessing import image 15 16 17 18#【学習データの読み込み】 19X = [] 20Y = []#category_name 21datagen = ImageDataGenerator(horizontal_flip=True) 22max_img_num = 10 23 24 25# a画像 26for picture in list_pictures('dir/pic/a'): 27 img = img_to_array(load_img(picture, target_size=(32,32))) 28 X.append(img) 29 Y.append(0) 30 31 img2 = image.load_img(picture, target_size=(32,32)) 32 x = image.img_to_array(img2) 33 x = x.reshape((1,) + x.shape) 34for d in datagen.flow(x, batch_size=1): 35 X.append(image.array_to_img(d[0], scale=True)) 36 if (len(X) % max_img_num) == 0: 37 break 38 X.append(img2) 39 40# b画像 41for picture in list_pictures('/dir/pic/b'): 42 img = img_to_array(load_img(picture, target_size=(32,32))) 43 X.append(img) 44 X.append(img2) 45 46 Y.append(1) 47 48# 画素値を0から1の範囲に変換 49X = X.astype('float32') 50X = X / 255.0 51 52# クラスの形式を変換 53Y = np_utils.to_categorical(Y, 1) 54 55# 学習用データとテストデータ 56X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2) 57 58# 【CNNを構築】 59model = Sequential() 60 61model.add(Conv2D(32, (3, 3), padding='same', 62 input_shape=X_train.shape[1:])) 63 64model.add(Activation('relu')) 65model.add(Conv2D(32, (3, 3))) 66model.add(Activation('relu')) 67model.add(MaxPooling2D(pool_size=(2, 2))) 68model.add(Dropout(0.25)) 69model.add(Conv2D(64, (3, 3), padding='same')) 70model.add(Activation('relu')) 71model.add(Conv2D(64, (3, 3))) 72model.add(Activation('relu')) 73model.add(MaxPooling2D(pool_size=(2, 2))) 74model.add(Dropout(0.25)) 75 76model.add(Flatten()) 77model.add(Dense(512)) 78model.add(Activation('relu')) 79model.add(Dropout(0.6)) 80model.add(Dense(2)) 81model.add(Activation('softmax')) 82 83# 【コンパイル】 84model.compile(loss='categorical_crossentropy',#損失関数 85 optimizer='adam',#最適化、オブジェクト 86 metrics=['accuracy'])#評価関数、正解率 87 88#【学習実行】 89history = model.fit(X_train, y_train, batch_size=64, epochs=1, 90 validation_data = (X_test, y_test), verbose = 1) 91 92 93score = model.evaluate(X_test, y_test, verbose = 1) 94print("正解", score[1], "loss", score[0]) 95 96#【学習をグラフ表示】 97%matplotlib inline 98plt.plot(history.history['acc']) 99plt.plot(history.history['val_acc']) 100plt.title('model accuracy') 101plt.legend(['train', 'test'], loc='upper left') 102plt.show() 103plt.plot(history.history['loss']) 104plt.plot(history.history['val_loss']) 105plt.title('model loss') 106plt.legend(['loss', 'val_loss'], loc='upper left') 107plt.show()

python

1#エラー 2AttributeError 3 Traceback (most recent call last) 4<ipython-input-36-9b9eeea39b2c> in <module> 5 X = X.astype('float32') 6AttributeError: 'list' object has no attribute 'astype' 7

kerasにて自分で拾ってきた画像で学習を行ってます。
本来の画像に加えて、ImageDataGeneratorでオーギュメントした画像のarrayをXに渡したいです。
様々なページを参考にさせていただいたのですが、astypeのエラーが出てしまいます。。。
4次元データを渡しているはずなのですが、なぜエラーが出てしまうのか不明です。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Xはそのままではpythonのlistになっていますので、numpy配列のメソッドや機能を使いたければ明示的に変換する必要があります。

python

1X = np.array(X)

でたぶんいけるでしょう。

投稿2019/06/08 19:01

hayataka2049

総合スコア30933

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

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

22Go

2019/06/09 00:29

X = np.array(X) X = X.astype('float32') ということでしょうか? ValueError: setting an array element with a sequence.となってしまいました。
hayataka2049

2019/06/09 15:04 編集

Xの各要素でshapeが違っていたりするのでは。
22Go

2019/06/10 00:34

ImageDataGeneratorで画像をオーギュメンテーションしたらshapeが変わってしまったのかと思うのですが、reshapeしてあるので要素は整っていると思ってました。printして確認してみたのですが、どう変更していいのかわかりませんので教えていただきたです。
hayataka2049

2019/06/10 01:22 編集

私にもわかりません、ごめんなさい。コーディングの意図の説明と状況を再現できるだけのデータの提供があれば、何らかの助けになるかもしれません。 わかる範囲でコメントすると、 img2 = image.load_img(picture, target_size=(32,32)) x = image.img_to_array(img2) x = x.reshape((1,) + x.shape) のあたりは明確に変です。このループで最後にxとimg2に代入された要素が後ろでずっと使い回される訳だけど、それでいいんですか? あとはXのリストの各要素のshapeをちゃんと見ること。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問