나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

프로그래밍

  • [C++] EigenRand: Eigen용 Random Library 개발

    2020.06.27 by ∫2tdt=t²+c

  • [Python] tomotopy로 Correlated Topic Model 수행하고 시각화하기

    2020.06.09 by ∫2tdt=t²+c

  • [C++ 11] 문자가 특정 문자 집합에 속하는지 우아하게 테스트하기

    2020.03.30 by ∫2tdt=t²+c

  • [C++] 빠른 generate_canonical 함수 만들기

    2019.12.25 by ∫2tdt=t²+c

  • 심심해서 해보는 딥러닝을 이용한 악기 소리 분류

    2019.12.02 by ∫2tdt=t²+c

  • [Python] tomotopy로 문헌별 토픽 비중 계산하기

    2019.12.01 by ∫2tdt=t²+c

  • [C++, Eigen] Eigen cast함수 SIMD로 벡터화하기

    2019.10.13 by ∫2tdt=t²+c

  • [C++] 템플릿을 이용해서 읽기 쉬운 타입 이름을 얻어보자

    2019.09.29 by ∫2tdt=t²+c

[C++] EigenRand: Eigen용 Random Library 개발

Eigen는 Random 지원이 빈약하다최근 c++로 tomotopy라는 토픽모델링 툴을 개발하면서 벡터화 가속을 위해서 Eigen이라는 라이브러리를 가져다 썼습니다. Eigen은 여러 곳에서 널리 사용되는 선형대수 연산용 C++ 라이브러리로, 사실상 이쪽 업계의 표준 아닌 표준이라고 할 수 있습니다. 오랫동안 검증되고 최적화되었기 때문에 Eigen 라이브러리만 가져다 쓰는 것으로도 충분히 속도 향상을 이룰 수 있었습니다. 다만 여러 확률 분포를 이용하는 토픽 모델링의 특성상 코드 내에서 확률 분포 내에서 임의의 숫자를 샘플링하는 작업을 굉장히 자주 반복해야하는데 불행히도 Eigen에는 랜덤 관련 함수 지원이 크게 부족했습니다. 일례로 현재 3.3.7버전에서 제공하는 Random함수는 다음 한 가지가 전..

프로그래밍 2020. 6. 27. 18:09

[Python] tomotopy로 Correlated Topic Model 수행하고 시각화하기

이전 포스팅에서 Correlated Topic Model을 통해서 뉴스 기사를 분석하고 주제 간의 상관관계를 뽑아낸 적이 있습니다. 최근 tomotopy에 CTM을 추가해서 누구나 쉽게 따라해볼 수 있게 된 김에 간단하게 따라해볼 수 있는 코드를 공유드립니다! 기본 코드는 tomotopy github의 예제코드(https://github.com/bab2min/tomotopy/blob/master/examples/ctm_network.py)와 동일하되, 전처리 부분만 한국어 전용으로 변경되었습니다. import tomotopy as tp # 토픽 모델링에 사용할 패키지 from kiwipiepy import Kiwi # 한국어 형태소 분석에 사용할 패키지 from pyvis.network import Ne..

프로그래밍/NLP 2020. 6. 9. 22:37

[C++ 11] 문자가 특정 문자 집합에 속하는지 우아하게 테스트하기

고전적 방법으로 문자 집합 소속 여부 테스트하기문자열 처리를 하다보면 빠질수 없는 작업이 어떤 문자가 특정 문자 집합에 속하는지 확인하는 것일 겁니다. 예를 들어 'b'가 A~F 범위에 속하는지, '간'이 가~깋 범위에 속하는지 비교하는 것처럼요. 일반적으로 이 작업은 if문을 몇번 써서 수행할 수 있습니다. 예를 들어 특정 문자가 A-F 범위에 속하는지를 확인하는 함수는 다음과 같이 작성할 수 있지요.bool is_in_a_f(int c) { return 'A'

프로그래밍/테크닉 2020. 3. 30. 02:02

[C++] 빠른 generate_canonical 함수 만들기

C++11 표준에서부터 랜덤 함수와 관련된 여러 라이브러리들이 추가되었는데요, 그 중 랜덤한 실수를 생성하기 위한 제일 기초적인 함수로 std::generate_canonical이 있습니다. 이 함수는 임의 부동소수점 타입의 수를 [0, 1) 범위 (0~1인데 0은 포함하고 1은 포함하지 않음)에서 임의로 생성합니다. 또한 이 때 생성할 난수의 최소 랜덤 비트를 템플릿 인자로 설정할 수 있게 되어있습니다. 이 함수는 제일 기본적인 실수 난수를 생성하므로, 이보다 더 복잡한 실수 난수들(정규 분포에서 뽑기, 베타, 감마 분포에서 뽑기 등)은 이 함수의 결과값을 바탕으로 사용합니다. 즉 랜덤 실수 생성의 기본 중의 기본이라 할 수 있습니다. 또한 깁스 샘플링과 같이 확률적 샘플링을 사용하는 프로그램을 짜게 ..

프로그래밍/테크닉 2019. 12. 25. 14:35

심심해서 해보는 딥러닝을 이용한 악기 소리 분류

음악을 듣다보면 참 신비로운 소리들이 많습니다. 피아노 소리처럼 익숙한 음색도 있지만, 스틸 드럼처럼 낯선듯 익숙한듯 뭔지 모를 음색들도 많지요. 종종 듣다보면 그거 참 신기한 음색인데 어떤 악기인지는 감도 안 잡힐때가 있습니다. 이것 참 지식인에 음악을 올려서 무슨 악기냐고 물어볼 수도 없고, 궁금함에서만 멈춰야한 적이 있었는데요, 딥러닝으로 핫한 시대에 맞춰 소리에 따라 악기를 분류해주는 모델을 만들어보면 좋겠다는 생각이 들었습니다. 이 포스팅은 그 기나긴 대장정의 첫 걸음입니다. 학습 데이터 만들기 딥 러닝 모델을 만드는 건 어렵지 않습니다. 데이터만 충분히 있다면요. 문제는 악기별로 음색을 분류해서 녹음해놓은 데이터셋을 찾아보기 어렵다는 것입니다. 단, 실제 악기를 녹음해놓은 데이터셋은 많지 않지..

프로그래밍 2019. 12. 2. 21:52

[Python] tomotopy로 문헌별 토픽 비중 계산하기

이전 글(https://bab2min.tistory.com/633)에서 tomotopy로 간단하게 토픽 모델링을 실시하는 방법에 대해 소개했었는데요, 많은 분들께서 문헌별 주제 비중 계산하는데에 어려움을 겪고 계신듯하여, 문헌별 토픽 비중을 계산하는 방법을 이번 글에서 별도로 소개하도록 하겠습니다. 먼저 다음과 같이 LDA 토픽 모델을 학습시키도록 하겠습니다.import tomotopy as tp # 먼저 모듈을 불러와야겠죠 model = tp.LDAModel(k=20, alpha=0.1, eta=0.01, min_cf=5) # LDAModel을 생성합니다. # 토픽의 개수(k)는 20개, alpha 파라미터는 0.1, eta 파라미터는 0.01 # 전체 말뭉치에 5회 미만 등장한 단어들은 제거할 겁니다..

프로그래밍/NLP 2019. 12. 1. 00:26

[C++, Eigen] Eigen cast함수 SIMD로 벡터화하기

Eigen은 C++기반의 선형 대수 연산 라이브러리입니다. 이 라이브러리의 특징은 c++의 템플릿을 쥐어짜서 컴파일 시간에 행렬 간의 연산식을 분석하고 최적의 연산 순서를 결정해서 연산을 수행한다는 것입니다. 예를 들어 Eigen::MatrixXf a, b, c, d; a = b * c + d; 와 같은 식이 있다면, 일반적인 c++객체에서는 b*c를 연산한 뒤 그 리턴값으로 임시 객체가 생성이 되고, 이 임시객체와 d를 더한뒤 임시 객체를 생성하고, 최종적으로 이 임시객체가 a에 대입되는 식으로 연산이 진행될 겁니다. 하지만 Eigen에서는 Expression Template이라는 템플릿의 응용기법을 이용해 이런 불필요한 연산을 회피하고, b*c를 바로 a에 대입한뒤 거기에 d를 더 더해서 임시객체 생..

프로그래밍/테크닉 2019. 10. 13. 01:35

[C++] 템플릿을 이용해서 읽기 쉬운 타입 이름을 얻어보자

C++에는 런타임 타입 정보(RTTI)를 알려주는 typeid 시스템이 들어가 있습니다. 따라서 컴파일 언어이면서도 생각보다는 유연하게 실행 시간에 특정 변수의 타입을 조회하고 타입 간의 연산을 수행할 수가 있습니다. typeid로 얻어지는 type_info 인스턴스는 name()이라는 멤버 함수를 가지는데, 이 멤버 함수는 해당 타입의 이름을 알려줍니다. 이 값을 통해 현재 변수의 타입이 무엇인지 유저에게 문자열로 출력해줄 수가 있는 것이죠.문제는 이 name()이 사실 사람이 읽기에 적합한 문자열을 주지 않는다는 것입니다. (게다가 컴파일 환경에 따라 출력값이 달라질 수도 있구요.) 예로 gcc 8.3에서 typeid(std::vector).name()는 St6vectorImSaImEE라는 값을 반환..

프로그래밍/테크닉 2019. 9. 29. 19:10

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

우리역사바로알기대회 kiwi 라틴어 BigFloat 영어구조론 python 포니게임 자연언어처리 NLP 한국고대경제와사회 리듬게임 악보 c++ 문헌정보통계 텍스트 마이닝 pg어 php 토픽 모델링 Direct3D 정보조직론

방문자

오늘
어제
전체

페이징

이전
1 2 3 4 5 6 ··· 28
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바