Tensorflow 와 RNN,양 방향 LSTM 등의 구덩이 밟 기 기록 및 해결

2913 단어 TensorflowRNNLSTM
1.tensorflow(길이 가 정 해 지지 않 음)텍스트 시퀀스 읽 기와 해석
tensorflow 가 csv 를 읽 을 때 각 열의 데이터 형식 을 지정 해 야 합 니 다.
그러나 RNN 과 같은 시퀀스 입력 을 받 아들 이 는 모델 에 있어 서 하나의 시퀀스 의 길 이 는 고정 되 지 않 는 다.이때 csv 를 사용 하여 시퀀스 데 이 터 를 저장 하려 면 먼저 특징 시퀀스 를 한 열 로 연결 해 야 합 니 다.
예 를 들 어 두 개의 데이터 서열,첫 번 째 항목 은 라벨 이 고 그 다음은 특징 서열 이다.
[0,1.1,1.2,2.3]을[0,'1.1 로 전환1.2_2.3']
[1,1.0,2.5,1.6,3.2,4.5]을[1,1.0 으로 전환2.5_1.6_3.2_4.5']
이렇게 해서 모든 데 이 터 는 고정 두 열 만 포함 된다.
읽 기 방식 은 두 번 째 열 을 문자열 형식 으로 지정 하고 문자열 을''에 따라 읽 는 것 입 니 다.분할 하여 숫자 로 변환 하 다.
관건 적 인 몇 줄 코드 예 시 는 다음 과 같다.

def readMyFileFormat(fileNameQueue):
    reader = tf.TextLineReader()
    key, value = reader.read(fileNameQueue)

    record_defaults = [["Null"], [-1], ["Null"], ["Null"], [-1]]
    phone1, seqlen, ts_diff_strseq, t_cod_strseq, userlabel = tf.decode_csv(value, record_defaults=record_defaults)
    ts_diff_str = tf.string_split([ts_diff_strseq], delimiter='_')
    t_cod_str = tf.string_split([t_cod_strseq], delimiter='_')
    #         
    Str2Float = lambda string: tf.string_to_number(string, tf.float32)
    Str2Int = lambda string: tf.string_to_number(string, tf.int32)
    ts_diff_seq = tf.map_fn(Str2Float, ts_diff_str.values, dtype = tf.float32) #      dtype,    fn       
    t_cod_seq = tf.map_fn(Str2Int, t_cod_str.values, dtype = tf.int32)
2.타 이 밍 모델 링 의 시퀀스 예측,시퀀스 적합,태그 예측 및 입력 데이터 형식
시퀀스 예측,적합 한'태그'는 모두 시퀀스 자체 이 고 미래 시간 또는 현재 시간 과 구별 되 며 현재 시간의 적합 작업 은 antoencoder 의 reconstruction 과 유사 합 니 다.
라벨 예측 은 언어학 모델 링 에서 흔히 볼 수 있다.단어 급 라벨 의 단어 와 전체 라벨 의 감정 분석 이 있 는데 전 자 는 모든 단어 에 대한 입력 에 대해 단어 표 지 를 출력 해 야 한다.후 자 는 마지막 몇 개의 출력 등급 을 추출 하여 피 드 포워드 신경 망 분류 기 이다.
keras 의 입력-출력 쌍:시퀀스 를 여러 세 션 으로 나 누 어야 합 니 다.
시퀀스 형식:
시간 별 목록:staticbidirectional_rnn
다 차원 배열:bidirectionaldynamic_rnn 과 stackbidirectional_dynamic_rnn 길 어 지 는 양 방향 rnn 의 정확 한 사용 자세
3.다 중 태 스 크 설정 및 해당 하 는 출력 벡터 구분
탭 예측 작업 은 필요 에 따라 출력 을 받 으 면 됩 니 다.
시퀀스 예측,적합:
양 방향 lstm:보통 의합 에 사용 합 니 다.그러나 동적 정 보 를 포착 해 야 한다 면 시퀀스 의 완전한 입력 이 필요 하 더 라 도 정방 향 예측 과 역방향 예측 을 더 할 수 있다.
단 방향 lstm:의합 과 예측
4、zero padding
후 에는 보통 tf.boolean 을 통 해mask()는 이러한 0 의 영향 을 격 리 하고 함수 입력 은 데이터 매트릭스 와 0 위 치 를 보충 하 는 지시 행렬 을 포함한다.
5、get_shape()방법
tf.shape()유형 과 달리 전 자 는 list 를 얻 고 후 자 는 tensor 를 얻 습 니 다.
6.양 방향 LSTM 의 정보 병목 해결
在这里插入图片描述
시간 단계 의 마지막 출력 이 시작 되 는 일부 문자 가 잊 혀 질 수 있 습 니 다.
그래서 여 기 는 매 시간 마다 출력 을 처리 하고,
주요 처리:
1.연결:모든 출력 을 연결 합 니 다.
2、Average
3、Pooling
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기