2017-05-08 7 views
0

tensorflow를 사용하여 시퀀스에 시퀀스를 쓰고 싶습니다. 내 입력 데이터 형태는tensorflow, 가변 데이터 길이가있는 decode_csv

[input_length, target_length, input , target] 

이며, 그들은 모두 서로 다른 길이 있습니다. tf.decode_csv은 어떻게 사용할 수 있습니까? 최대 입력 길이로 record_defaults를 만들려고했습니다. 하지만 모든 모양은 record_defaults에 완전히 정의되어야합니다 ............ 나는 이것에 대해 알 수 없습니다.

csv_file = tf.train.string_input_producer([file_name], name='file_name') 
    reader = tf.TextLineReader() 
    _, line = reader.read(csv_file) 
    record_defaults = [[0] for row in range(20)] 
    data = tf.decode_csv(line,record_defaults=record_defaults,field_delim=',') 
    len_error = tf.slice(data,[0],[1]) 
    len_target = tf.slice(data, [1], [1]) 
    error = tf.slice(data,[2],len_error) 
    target = tf.slice(data, 2+len_error , len_target) 
+0

나는 이것을 시도해 보았지만이 접근법을 사용하여 작동시키지 못했습니다. 실제로 작동하도록하려면 행이 모두 최대 길이와 같아야합니다. Max에 대한 기본값을 정의했지만 관측치가 적은 행이 있으면 '예상 X 관측치가 있지만 Y가 표시됩니다.'라는 오류가 표시됩니다. 공백을 시뮬레이트하기 위해 CSV 파일에 ','을 추가하는 것과 같은 시도가 가치가 있습니까? 나 자신을 시도하지 않았습니다. 자주 TF 외부의 텍스트 파일을 읽는 것이 더 쉽습니다. 예를 들어, numpy/pandas와 TF와 같은 값을 피드하는 것이 좋습니다. 그러나이 방법을 사용하면 멋진 TF 셔플 링과 여러 파일 큐를 잃을 수 있습니다. –

+0

와우 .... 당신은 너무 친절합니다. 나는 다른 파일 형식을 시도해야한다. 대단히 감사합니다. – Amily

답변

1

예, tf.decode_csv은 모든 행이 동일한 크기 여야합니다. 이 방법이 효과가 없다면 Github에서 기능 요청을 제출하는 것을 고려해보십시오.

또한 CSV 파일을 전처리하여 모든 항목을 동일한 수의 열로 채울 수 있습니다. record_defaults 인수를 tf.decode_csv에 사용하여 필드를 비워 두지 만 기본값을 제공 할 수 있습니다.