Python 에서 소리 데이터로 뭔가를 해보려 한다면 librosa 를 많이 쓰는듯 하다..

 

하지만 왠지 남들 따라하는거 같은 진 기분? 이라서.. scipy 를 쓰기로 했다. 

 

scipy는 이전에도 이미지 데이터 다룰때도 써봐서 익숙한 기분이고 그냥 친숙했다.

 

from scipy.io import wavfile
from scipy.cignal import butter, lfilter

# 파일 읽기
sampleRate, data = wavfile.read(dataPath)

# bandpass
filteredData = buter(order, [low, high], btype='bandpass')

이렇게 선언하면 wave 파일을 읽어오고 low-pass, band-pass, high-pass 필터 를 쓸수 있다.

 

btype 에는 bandpass 외 에도 ‘lowpass’, ‘highpass’, ‘bandstop’ 들이 가능 하다.

 

아직은 이 정도 필터만 사용해도 될듯 한데.. 조금씩 더 알아가야지..

 

https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html

 

scipy.signal.butter — SciPy v1.9.3 Manual

Type of output: numerator/denominator (‘ba’), pole-zero (‘zpk’), or second-order sections (‘sos’). Default is ‘ba’ for backwards compatibility, but ‘sos’ should be used for general-purpose filtering.

docs.scipy.org

 

# 왜 이름이 butter 인가 궁금해서 찾아보니 butterworth 라는 이름의 필터가 있더라... 

https://en.dict.naver.com/#/entry/enko/2d9430ff4e9b47e7bbf30b1c3f3134e4

 

네이버 영어사전

미국/영국식 발음, 여러 종류의 출판사 사전 뜻풀이, 풍부한 유의어/반의어, 대표사전 설정 기능, 상세검색 기능, 영어 단어장 제공

en.dict.naver.com

 

'의료프로젝트' 카테고리의 다른 글

새 프로젝트  (0) 2022.12.28

새로운 프로젝트 시작!

 

의료 데이터를 정식으로 다뤄 보는건 처음이라 어렵겠지만 어찌어찌 잘 해 나가야 겠다.

 

처음부터 온전히 나의 프로젝트로 시작하는 거라 나름의 의무감? 책임감? 도 들고..

 

어찌됐던 시작..

'의료프로젝트' 카테고리의 다른 글

Python 에서 소리 데이터 사용하기  (0) 2022.12.28

Tensorflow 에서 레이어를 구성하는 방법에는 두가지가 있는데, 하나는 Sequential 나머지 하나는 Functional 이다.

 

Sequential 방법이 보기에는 비교적 직관적이라 코딩하기 쉬울수는 있지만, 레이어간의 입력과 출력을 직접 만지는 것은 불가능해서 복잡한 모델을 구성하기에는 부적합 할때가 있다. 

 

그럴때 쓰는 방법이 Functional 방법이다. 

 

model = model.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu'm input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

model.complie(optimizer='adam',
              loss='sparse_categorical_crossentropy', 
              metrics=['accuracy'])

위에 코딩이 Sequential 방법

 

inputs_img = kereas.Input(shape=(28, 28, 1), name='Images')
x = layers.Conv2D(32, (3, 3), activateion='relu')(input_img)
x = layers.MaxPooling2D((2, 2))(x)
x = layers.Conv2D(64, (3, 3), activateion='relu')(input_img)
x = layers.MaxPooling2D((2, 2))(x)
outputs_img = layers.Conv2D(64, (3, 3), activation='relu')(x)

x = layers.Flatten()(outputs_img)
x = layers.Dense(64, activation='relu')(x)
outputs = layers.Dense(10, activation='softmax')(x)
model = keras.Model(inputs = inputs_img, outputs = outputs, name='MNIST_model')

model.compile(optimizer = 'adam',
              loss='sparse_cross_categorical',
              metrics=['accuracy'])

이 방법이 Functional 방법이다. 같이 놓고 비교하면 큰 차이는 없지만 약간 진행 방법이 다르다. 

Sequential 은 model 이라는 인스턴스를 먼저 생성해놓고 그 안에 레이어를 순서대로 쌓아가는 느낌이고, 

Functional 은 시작점 부터 시작해서 레이어의 출력과 다음 레이어의 입력을 노드로 이어가는 느낌이다. 

+ Recent posts