ROKO

Numpy array[::] 본문

Develop

Numpy array[::]

RO_KO 2023. 1. 17. 21:15
728x90

numpy array 에서 유용하게 사용할 수 있는 옵션중 하나이다.

 

식이 갖는 의미는 배열안에서 for문을 실행하는것과 같다.

Array[start:end:step] 의 형식으로 아무것도 쓰지 않을때는 전체 해당 열을 전체 출력한다는 것과 같다.

 

import numpy as np

#transformer의 positional encoding 수식
def get_sinusoid_encoding_table(n_seq, d_hidn):
    def cal_angle(position, i_hidn):
        return position / np.power(10000, 2 * (i_hidn // 2) / d_hidn)
    def get_posi_angle_vec(position):
        return [cal_angle(position, i_hidn) for i_hidn in range(d_hidn)]

    sinusoid_table = np.array([get_posi_angle_vec(i_seq) for i_seq in range(n_seq)])
    
    # [전체, 0부터 짝수만] step이 2이기 떄문.
    sinusoid_table[:, 0::2] = np.sin(sinusoid_table[:, 0::2])  # even index sin 
    # [전체, 1부터 홀수만]
    sinusoid_table[:, 1::2] = np.cos(sinusoid_table[:, 1::2])  # odd index cos

    return sinusoid_table
728x90
Comments