본문 바로가기

프로그래밍

EM(expectation maximization) 알고리즘 python 구현 EM 알고리즘은 다음과 같은 목표 함수를 최소화 하는 것이다.$$J= {\sum_{n=1}^N \sum_{k=1}^K r_{nk} \Vert x_n - u_k \Vert^2}$$여기서 \(N\)은 데이터의 갯수 \(K\)는 집단의 갯수이다.\( r_{nk}\)는 데이터 포인터 \(x_n\)대한 이진 표시 변수 \(r_{nk} \in {0,1}\)을 도입한 것이다.목표는 \( J\)를 최소화하는  \(\{r_{nk}\}\)와 \(\{u_{k}\}\) 를 찾는 것이다.이를 위하여 반복적 과정을 통해 \(r_{nk}\) 와 \(u_{k}\)의 최적화를 수행한다.일단 \(u_{k}\) 에 대한 초기값을 설정한다.첫단계 \(u_{k}\) 를 고정한 채로 \( J\)를 최소화하는 \(r_{nk}\) 를 찾는다.두번.. 더보기
tensorflow dataset padded_batch 함수 입력데이터의 크기가 가변 일때 같은 크기로 읽을 수 있게 변환해 주는 함수이다. 샘플을 보면 그리 어렵지 않게 사용법을 익힐수 있다. padded_batch padded_batch( batch_size, padded_shapes=None, padding_values=None, drop_remainder=False ) Combines consecutive elements of this dataset into padded batches. This transformation combines multiple consecutive elements of the input dataset into a single element. Like tf.data.Dataset.batch, the components of the .. 더보기
tf.transpose 함수 사용하기 텐서플로의 transpose 함수는 행렬 연산의 transpose 를 구현하는 함수이다. 함수의 사용법은 아래와 같고, tf.transpose( a, perm=None, conjugate=False, name='transpose' ) a A Tensor. perm A permutation of the dimensions of a. This should be a vector. conjugate Optional bool. Setting it to True is mathematically equivalent to tf.math.conj(tf.transpose(input)). name A name for the operation (optional). Args A transposed Tensor. Returns .. 더보기
Cocoa Programming Objective-C Xcode 8.3.2 에서 스토리보드(Storyboard) 삭제하기 Cocoa Programming을 공부하는 입장에서 Xcode에서는 스토리보드(Storyboad)를 쓰는 것이 대세 인것 같다.하지만 하위 호환성을 위해 Xcode 8.x 에서 스토리보드를 사용하지 않는 방법을 공유하고자 한다.Xcode 8.x에서는 스토리보드를 기본적으로 만들게 되어 있다.일단 프로젝트를 열고1. 스토리 보드 파일을 삭제한다. 2. info.plist 파일에서 NSMainStoryBoardFile을 Main nib file base name으로 변경하고 Value를 MainMenu로 한다. 3. AppDelegate.m 파일에 #import "AppDelegate.h" @interface AppDelegate () @property (weak) IBOutlet NSWindow *wind.. 더보기
xcode core data Create NSManagedObject Subclass 생성시 link 오류 문제 Objective-C로 core data 샘플을 작성하고 있는데, Entities 를 생성하고 Editor 메뉴에서 Create NSManagedObject Subclass로 클래스를 자동 생성한 후 컴파일을 하면 link 오류가 생긴다. 해결방법 1 : 생성 된 파일 중에서 CoreData관련 클래스만 삭제한다. 방법 2: Codegen에서 Class Definition을 Manual/None으로 변경한다. 더보기
slickEdit 동일 심볼 하이라이트(Highlight) 기능 slickEdit를 사용하다보면 한 화면에서 동일한 심볼에 대한 하이라이트 기능이 되었으면 하는 생각이 생긴다. VisualStudio나 eclipse는 이 기능이 기본 적으로 제공이 되지만, VisualStudio에서의 하이라이트 기능 slickEdit에서는 사용자 메크로로 그 기능을 추가 해야한다. slickEdit 메뉴 중 macro를 보면 Load Module 을 통하여 첨부된 매크로를 읽어 들인 후 List Macros를 클릭하면 아래와 같이 뜬다. 해당 매크로를 클릭 후 Run을 누른다. 하이라이트 기능이 잘 동작한다. 더보기
vxWorks에서 모든 패킷 잡는 방법 구현 아래와 같이 함수를 구현한다. int muxSnarfInit(char *if_name, int if_unit) { END_OBJ *pEnd; void *pCookie; unsigned int flags = 0; char ifnameBuf[10]; pEnd = endFindByName(if_name, if_unit); if (NULL == pEnd) { printf("Cannot find END device %s%d\n", if_name, if_unit); printf("Usage: muxSnarfInit(char *if_name, int if_unit)\n"); return ERROR; } pCookie = muxBind(if_name, if_unit, snarfRecvFunc, 0, 0, 0, MUX_.. 더보기
MFC 프로젝트에서 C 파일 컴파일 하기 보통 MFC 프로젝트에서 C파일을 만들어 쓸일이 별로 없지만, 저 같은 경우는 윈도우에서 코드를 만들고 기능 확인 후 임베디드 프로젝트로 파일을 옮깁니다. MFC는 C++ 프로젝트이고, 임베디드 코드는 C로 되어 있다보니, 옮길 때마다 Cpp 파일을 C로 바꾸는 것도 귀찮은 작업이고 실수하기 쉬운 일입니다. 그렇다고 cpp파일을 강제로 C로 바꾸면 오류를 뿜습니다. 이 때 MFC의 컴파일 옵션 중에 .c 파일을 cpp로 간주하여 컴파일 하는 옵션이 있습니다. 프로젝트 속성페이지 - C/C++ - 고급컴파일 옵션을 C++ 코드로 컴파일 (/TP)로 바꾸면 됩니다. 만일 /TC로 하면 모든 파일을 .c로 간주합니다.참고하세요. 더보기