2017-11-30 18 views
0

저는 Tensorflow로 작업하기 시작했습니다. Caffe를 사용하면 효율적으로 데이터를 읽을 수 있었지만 Tensorflow를 사용하면 TFR 코드, 일괄 처리, 여러 위협 요소, 처리를 생성하면서 데이터로드 프로세스를 직접 작성해야합니다. 그 스레드 등. 그래서 그들은 데이터를 읽을 부분을 처리 할 때 시작 v3을 예로 들어 시작했습니다. 필자는 Tensorflow에 익숙하지 않고 Python에 비교적 익숙하지 않기 때문에이 부분에서 정확히 무슨 일이 벌어지고 있는지 이해할 수없는 것 같습니다. (예, label_index에 레이블의 크기를 늘리면됩니다 -하지만 이유는 무엇입니까? ???이 라벨 하나의 뜨거운 인코딩을 만드는 것은 우리가 왜 그냥 각각의 파일로 길이 또는 파일을 많이 확장 들으 레이블이없는해야합니까Tensorflow는 레이블을 저장하기 위해 하나의 핫 인코딩 만 사용합니까?

labels.extend([label_index] * len(filenames)) 
texts.extend([text] * len(filenames)) 
filenames.extend(filenames) 

전체 코드가 여기에있다. : 언급 https://github.com/tensorflow/models/tree/master/research/inception

부분은 데이터/build_image_data.py 아래이고 (폴더 이름이 레이블) 폴더에 저장 화상으로서 기존의 데이터 세트로부터의 화상 데이터 세트를 구축 : https://github.com/tensorflow/models/blob/master/research/inception/inception/data/build_image_data.py

,174,
+1

Tensorflow의 요구가 아니기 때문에 네트워크 아키텍처가 필요하기 때문에 잠시만 핫 인코딩해야합니다. 네트워크는 N 클래스 분류 자이므로 최종 레이어는 클래스 당 하나의 뉴런을 가지며 샘플을 속하는 클래스와 일치하는 뉴런을 활성화하기 위해 네트워크를 트레이닝합니다. 라벨을 한 번 핫 인코딩이 일의 첫 번째 단계입니다 – GPhilo

+0

@ GPhilo 좋아, 나는 그것을 볼, 감사합니다. 그런데 텍스트 (텍스트는 클래스의 자연어 레이블 인 개, 집, 고양이 등)를 사용해야하는 이유는 무엇입니까? [ 'class1', 'class2'등의 목록을 채 웁니다. , 'class2', 'class1', 'class2', 'class1', 'class2', 'class1', 'class2', 'class1', 'class2', ' 'class1', 'class2', 'class1', 'class2', 'class1', 'class2'] 이유가 무엇입니까? – dusa

+0

귀하의 의견을 이해하지 못하고 있습니다. 목록에 무엇이 있습니까? – GPhilo

답변

1

의견에서 논의한 내용 정리 :

Tensorflow의 요구가 아니기 때문에 네트워크 아키텍처에서 요구하기 때문에 원 핫 인코딩해야합니다. 네트워크는 N 클래스 분류 자이므로 최종 레이어는 클래스 당 하나의 뉴런을 가지며 샘플을 속하는 클래스와 일치하는 뉴런을 활성화하기 위해 네트워크를 트레이닝합니다. 라벨을 한 번 핫 인코딩하는 것은이를 수행하는 첫 번째 단계입니다. 사람이 읽을 수있는 레이블을 소개

, 당신이 차례로 세트에 폴더 집합에서이다 TfRecord 파일을 데이터 집합을 변환하는 _process_dataset 사용하는 _find_image_files 기능에 위치하고을 참조하고있는 코드 convenient input format type for Tensorflow.

사람이 읽을 수있는 레이블 문자열은 tfrecord 파일 내부의 Example에 '추가'기능으로 포함되어 있습니다 (교육 중 중간 결과의 시각화를 단순화하기 위해). 데이터 세트에는 꼭 필요한 것은 아닙니다. 네트워크 매개 변수의 실제 최적화에서 어떤 식 으로든 사용해서는 안됩니다.