2017-12-25 3 views
0

에 훈련 데이터를 전달하기 위해 나는 한 다음 파이썬 스크립트를어떻게 신경 네트워크

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') 

이 이미지 파일 이름과 라벨을 전달하는 올바른 방법인가? 나는 또한 줄에 아래의 오류 받고 있어요

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

: 그에 X_to_text_file = np.savetxt('x.txt', X.reshape(np.shape(X)), fmt='%5f')

TypeError: float argument required, not numpy.ndarray 

모든 아이디어 data.txt의 형식은 다음이 제공?

감사합니다.

+0

는'0-255' 정수로 가져옵니다. 아마 float로로드되기를 원할 것입니다. 더 좋은 것은'cv2' 모듈을 사용하여 더 빠르고 이미 numpy 형식으로 이미지를 가져 오거나, np로로드 된'scipy'를 사용하는 것입니다. – user1767754

+0

무엇을하려고합니까? 'x.txt'를 만들거나 그것을 읽고 싶습니까? 왜'N ** 2 '파일을 읽는거야? 'import_data' 란 무엇입니까? '레이블'이란 무엇입니까? – MaxU

+0

@MaxU "x.txt"를 만들고 거기에 배열을 저장하고 싶습니다. "import_data"는 txt 파일에서 데이터를 읽는 사용자 지정 함수입니다. N ** 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)