2017-02-04 6 views
2

그 목적을 위해 keras에 char-rnn 텍스트를 코딩하려고합니다. 먼저 텍스트를 시퀀스로 변환 한 다음 시퀀스를 채 웁니다. 그러나이 단계 자체를 구현하는 데 많은 어려움을 겪고 있습니다. 나는이 기능 (pad_sequence) 자체의 왜곡되거나 이해가 부족하기 때문에 그것을 믿는다. 나는 그것을 시험해 보려고 노력했다. 그리고 좋은 튜토리얼을 발견하지 못했다. 그리고 그것들은 케라에서 많이 설명되지 않았다. docs.keras pad_sequence는 어떤 작업을 수행합니까?

pad_sequence은 무엇이며 어떤 내용을 말해 줄 수 있습니까? 왜 우리는 먹이기 전에 순서 (여기 문자 레벨)를 채워야합니다.

이 텍스트를 예로 들어주십시오.

보스톤의 브리검 여성 병원에서 내 클리닉 에서 전립선 암으로 진단받은 50 세 남성을 데려가십시오. 그는 자신의 전립선을 제거하기 위해 소설의 절차를 받았고 나중에 나머지 암을 근절하기 위해 초점을 맞춘 방사선 을 받았습니다. 불행히도 그의 질병 가 1 년 후 반환되었습니다. 그러나 2 개의 새로운 치료 후에, 그의 암은 지금 가 점검에 나타납니다. 그리고 그의 암이 퍼지면 많은 다른 많은 치료법을 포함하여 다른 치료제가 그의 암을 완화시킬 수 있습니다.

답변

4

우리가 RNN을 훈련시키는 방법은 일련의 일련 번호를 제공하는 것입니다.

RNN은 그라데이션의 백 프로 퍼 게이트와 관련된 잘 알려진 문제점이 있습니다 (Bengio & al 참조). 이것이 RNN에 일반적으로 제한된 시퀀스를 공급하여 훈련시키는 이유입니다. 예를 들어, 훈련 세트를 만들기 위해 텍스트를 더 작은 조각 (문장)으로 자르십시오.

구현의 편의를 위해 keras는 배치 (Recurrent Models with sequences of mixed length)의 동일한 길이의 시퀀스 만 허용합니다. 따라서 시퀀스의 길이가 같지 않으면 pad_sequence이 유용합니다.

pad_sequence은 입력리스트 (리스트의리스트)로서 LIST의 시퀀스를 취하고 패딩 된 시퀀스들의리스트를 반환 할 것이다.

예제가 제대로 작동하려면 텍스트를 문자 시퀀스로 잘라야합니다. 선택기 ('.'?)를 선택한 다음 모든 문장을 동일한 길이로 채울 수 있습니다. 또는 내 의견으로는 똑똑한 텍스트를 char (공백 및 \ n)의 시퀀스로 간주하고 매 n 개의 char을 잘라낸 다음이 시퀀스 목록을 교육 데이터로 제공하십시오. 이렇게하면 마지막 순서 (데이터의 char 수가 시퀀스 길이 n의 배수가 아닌 경우)를 제외하고 패딩을 사용하지 않아도됩니다.

물론 RNN에 입력하기 전에 문자를 토큰 화하여 벡터 공간에 삽입하는 것을 잊지 마십시오. RNN은 범주 형 데이터에서 작동하지 않습니다.

+0

이것은 내가 한 일이다. http://stackoverflow.com/questions/42002717/how-should-we-pad-text-sequence-in-keras-using-pad-sequences 그러나 작동하지 않는다. – Eka

+0

나는 대답했다. 거기에 귀하의 질문 :) –