xswer19.log
로그인
xswer19.log
로그인
Data
안선경
·
2023년 4월 26일
팔로우
0
0
DL_study
목록 보기
10/23
이번에는 데이터를 local파일에서 바로 불러오는 방법으로 해봤다.
먼저 os 모듈을 통해 파일의 내용을 확인하고, glob모듈을 통해 데이터셋을 리스트 형태로 불러왔다.
그리고 하나의 파일을 io모듈로 읽어보니 코드로 묶여있다.
묶인 파일을 decode를 통해 풀어주고, 32*32 픽셀에 3개 즉 rgb(색채) 이미지의 데이터가 array형태로 출력된다.
이미지를 확인해보니 두꺼비인듯하다.
이제 위에 과정을 하나의 함수로 만들었다.
하지만 위와 같은 방법은 사진 한장한장을 데이터로 모두 저장하기 때문에 저장 공간의 한계가 명확하다.
그래서 사진을 부분부분 짤라서 사용할 수 있는 방법이 있다.
tensorflow.data.Dataset.from_tensor_slices를 사용해서 부분적으로 잘라서 사용할 수 있다.
AUTOTUNE은 자신이 사용하고 있는 컴퓨터의 사양에 최적화된 병렬구조를 설정해준다.
dataset.map은 해당 메소드에 입력한 함수를 데이터 전체에 적용시켜주고, 밑에 batch_size를 설정하고 refetch는 하나의 뭉터기를 교육할 때 다음 뭉터기를 미리 읽음으로써 실행 속도를 높여준다.
shuffle은 무작위로 데이터를 교육시키며 repeat은 하나의 epoch안에서 무한히 돌아 교육시키는데 나중에 for문을 통해 epoch를 설정하기 때문에 무한으로 값을 넣었다.
그리고 라벨값을 만들기 위해 데이터셋에 string을 쪼개서 동물의 이름만 나오게 하고, 해당 값이 array형태로 바꾼 라벨리스트에서 해당하는 위치에 True(1)이 나오게 해서 class개수에 따른 onehotEncorder형태로 만들었다.
그리고 이미지 array를 만드는 함수를 이용해 x, y를 데이터를 만드는 함수를 만들었다.
이제 만든 함수를 map 입력값에 넣어서 각 원소에 적용되게 만든 후 데이터셋을 보니 교육데이터와 결과 데이터가 제대로 들어가있다.
이번에는 라벨값을 string형태가 아니라 바로 tensor타입으로 변환하는 방식으로 진행했다.
tensorflow.strings.split를 통해 Label값만을 추출하고, cast를 통해 원핫인코딩 형태로 Label값을 출력했다.
먼저 원핫인코딩을 만들어주는 함수를 만들고, 해당 함수를 새로운 함수에 넣어서 map를 통해 각 원소에 적용해주면 아까와 같이 32개의 사진이 32*32픽셀에 rgb색채의 데이터라 출력된다.
아재 해당 데이터를 통해 model에 compile를 통해 학습 과정을 설정하고, fit과정에서 아까 repeat()를 무한으로 줬기 때문에 fit자체에서 per_epoch를 설정해줘야한다.
안선경
상황을 바꿀 수 없다면, 나를 바꾸자
팔로우
이전 포스트
Model_save_and_Loda
다음 포스트
Image_Data_Generator
0개의 댓글
댓글 작성