2017-04-19 1 views
2

가변 길이 1-D 입력을 Tensorflow CNN으로 읽으려고합니다.Tensorflow에서 가변 길이 1D 입력을 읽으려면 어떻게해야합니까?

이전에 tf를 사용하여 CSV 파일을 구성하여 첫 번째 열을 레이블로 지정하고 나머지 열은 입력 값으로 구현하여 고정 길이 입력을 구현했습니다. 즉, 동일한 길이로 패딩/잘린 평평한 스펙트로 그램 데이터입니다. TextLineReader().

이번에는 입력으로 사용하려는 데이터 라인이 포함 된 파일로 가득 찬 디렉토리가 있습니다. (동일한 스펙트로 그램 데이터를 다시 가져 오지만 동일한 치수로 강제하고 싶지는 않습니다.) 라인 길이는 고정되지 않았습니다. CSV를 먼저 컴파일하는 이전 방법을 사용하려고하면 오류가 발생합니다. 나는 tf.TextLineReader()의 문서를 조사했고 모든 CSV 행이 동일한 모양이어야한다는 것을 지정 했으므로 나는 고생했다! 어떤 도움을 많이 주시면 감사하겠습니다 :)

+0

코드 및/또는 데이터 샘플을 보여 주면 도움이 될 것입니다. – tagoma

답변

2

길거나 짧은 샘플 권한이있을 때 데이터의 모양이 변하지 않는다고 가정하고 있습니까? 예를 들어, 1000 픽셀의 배열에서 네트워크를 훈련 시키면 커널 크기가 [5,1]입니다. 그 [5,1] 커널은 훈련 데이터에서와 같이 가변 길이 데이터에서 동일한 패턴을 볼 필요가 있습니다. 데이터가 늘어나거나 줄어드는 경우 정확한 해결책은 데이터를 트레이닝 데이터와 동일한 크기로 보간하여 셰이프/패턴이 일치하도록하는 것입니다.

가변 길이 입력을 원한다고 가정하면 이론적으로 일괄 처리 크기를 1로 설정하고 데이터의 1 차원을 변경하여 이론적으로이를 수행 할 수 있어야합니다.

X = tf.placeholder(dtype, shape=[1,None,1,1]) 

4 형태의 인수는 다음과 같습니다 :

그래서 귀하의 의견 자리 같을 것이다 1 = 배치 크기; 없음 = 알 수없는 첫 번째 크기 크기. 1 = 1D 데이터 세트이기 때문에 사용되지 않음, 1 = 1 개의 채널 이미지, 다시 사용되지는 않지만 tf.conv2d이 예상되는 4D 이미지를 수신하는 데 필요함.

이것은 가변 배치 크기를 지원하는 tensorflow를 구성하는 것과 크게 다르지 않습니다. 따라서 아래 링크를 검토하고 프로세스를 이해해야합니다. 당신은 2 차원에서 누락 된 값으로 행렬을 구성 할 수 없을 것 때문에 여기에 배치 크기 1 개 이상을 사용할 수 없습니다

get the size of a variable batch dimension

참고. 나는이 가변적 인 차원에서 컨볼 루션 연산이 작동 할 것으로 기대한다.

이 문제를 해결할 수있는 또 다른 옵션은 모두 0으로 입력을 덧붙이면 모두 공통 길이를 갖지만 모델 전방에 대해 교육을 받아야합니다.

+0

David 덕분에 가변 길이 차원으로 데이터를 정렬 한 다음 각 minibatch에서 제로 패딩 방식을 사용하기로 결정했습니다. 따라서 각 미니 태그 내에서 모든 샘플은 동일한 길이 (미니 바이트 길이의 최대 값과 동일)를 가지지 만, 배치 사이에서는 길이가 다를 수 있습니다. – kashkar

+0

여기에 대한 추가 질문이 있습니다. http://stackoverflow.com/questions/43684048/tensorflow-building-graph-with-batch-sizes-varying-in-dimension-1 – kashkar

관련 문제