2017-12-25 14 views
0

にトレーニングデータを渡すためにIしている次のPythonスクリプト:どのようにニューラルネットワーク

import numpy as np 
from PIL import Image 

names = [] 
X = [] 
labels = [] 

with open('data.txt', 'r') as f: 
    for line in f.readlines(): 
     tokens = line.split(' ') 
     names.append(tokens[0]) 
     labels.append(int(tokens[1])) 

for img in range(len(names)): 
    for name in names: 
     img = np.array(Image.open(name)) 
     X.append(img) 

X = np.array(X) 

X_to_text_file = np.savetxt('x.txt', X.reshape(np.shape(X)), fmt='%5f') 
X_data = import_data('x.txt') 

これは画像ファイル名とそのラベルを渡すための正しい方法はありますか?提供data.txtは、次の形式があること:X_to_text_file = np.savetxt('x.txt', X.reshape(np.shape(X)), fmt='%5f')

TypeError: float argument required, not numpy.ndarray 

その上の任意のアイデア:

img1.png 1 
img2.png 1 
img3.png 2 
img4.png 1 
img5.png 1 

を私はまた、ライン上で以下のエラーを取得していますか?

ありがとうございました。

+0

が '0-255'整数としてインポートされます。おそらく、それらをフロートとしてロードしたいと思うでしょう。さらに速く 'numpy'形式で画像を読み込むには' cv2'モジュールを使い、npとして読み込まれた 'scipy'を使うのも良い方法です。 – user1767754

+0

何をしようとしていますか? 'x.txt'を作成したいのですか?なぜあなたは 'N ** 2'ファイルを読んでいるのですか? 'import_data'とは何ですか? 'ラベル'とは何ですか? – MaxU

+0

@MaxU "x.txt"を作成してそこに配列を保存したいと思います。 "import_data"は、txtファイルからデータを読み込むカスタム関数です。 N ** 2ファイルの場合、おそらく私は2つのループを持っているということでしょうか?私はさまざまなイメージの名前を読み込もうとしています。それを行うより良い方法はありますか? – Simplicity

答えて

0

デモ:デフォルトのPILの画像によって

from glob import glob 
import cv2 

In [284]: names = glob(r'D:\temp\photo\*.jpg') 

In [285]: names 
Out[285]: 
['D:\\temp\\photo\\20081116-IMG_0900.jpg', 
'D:\\temp\\photo\\20081116-IMG_0902.jpg'] 

In [286]: X = np.array([cv2.imread(f) for f in names]) 

In [287]: X.shape 
Out[287]: (2, 2112, 2816, 3) 
関連する問題