'AI 기초 이해' 수업 2일차.
3주차까지의 여러 가지 좌충우돌도 어느 정도 안정되고 새로운 기분으로 (?) 4주차를 시작할 수 있을까 했더니, 밤새도록 고양이가 1시간 간격으로 울어대는 바람에 잠을 설치고 대략 의식이 혼미한 상태로 월요일 아침을 맞았다 (...).
그리고 역시 아니나 다를까, numpy 부터 미친듯이 헤매기 시작하는 것이었다 (...). 크아앙
이유는 분명히 mathematical representation 이 제대로 되어 있지 않기 때문일 것으로 짐작된다. 고등학생 때 완전히 수학을 포기한 것은 아니었지만, 문과에서 1등급을 노리는 친구들 외에는 수능에서 상대적으로 비중이 적었던 행렬과 확률/통계를 스킵하는 것이 대체로 선호되는 전략이었던 탓에 사실 별다른 전략도 없었으면서 그 부분은 거의 공부한 기억이 없다시피한데, 결국 돌고 돌아서 머신러닝에 발을 들이게 되고 그 분야에서 가장 중요한 것이 그것들이라니 (...). 신기한 일이다. 인생 참 알 수 없다.
과정이 시작한 지 벌써 1개월을 향해 달려가고 있는데 이렇게 계속 어영부영 시간을 보낼 수는 없어서, 어제부터는 저녁을 간단하게 먹으면서 선형대수에 관한 YouTube 영상을 1개씩 보기 시작했다. 오늘은 수업시간에 몰랐던 항등행렬 identity matrix 을 배웠고, 연결해서 과제 ? 자습 ? 문제인 one hot encoding 을 사부작사부작 만져봤다.
alphabet = 'abcdefghijklmnopqrstuvwxyz '
data = 'data science'
char_to_int = []
# encoder
for char in data:
char_to_int.append(alphabet.index(char))
num = len(alphabet)
encoded_matrix = np.eye(num)[char_to_int]
print(encoded_matrix)
# decoder
int_to_char = []
decoded_arr = np.argmax(encoded_matrix, axis=1)
for i in decoded_arr:
int_to_char.append(alphabet[i])
decoded_str = ''.join(str(c) for c in int_to_char)
print(decoded_str)
어째서 코드가 가시성을 가지지 않는가
아직은 초보이므로, 처음부터 함수로 정의하는 것보다, 일단은 생각했던 로직으로 돌아가는지 확인하고, 그런 다음 여러 번 테스트해서 문제 없이 돌아가면 함수로 정의하는 방식을 선호한다. 지금은 그 편이 각 함수나 메소드의 동작을 바로 알 수 있어서 직관적이다. 이 코드도 조금 시간이 흐른 뒤에 보면 또 다른 느낌일까. 분명히 유치하겠지 (...). 크아앙
잘 읽었습니다. 좋은 정보 감사드립니다.