.mat 파일로 저장된 훈련 된 CNN을 가져와이 파일을 사용하여 Python에서 분류 알고리즘을 만들 수 있습니까?

하 디트 싱

MATLAB 2019b에서 CNN을 만들었으며 훈련 된 CNN은 "trainednet.mat"라는 파일에 저장됩니다. 훈련 된 .mat 파일을 Python으로로드하고 MATLAB 2019b에로드하는 대신 Python에서 이미지를 분류하는 방법이 궁금합니다. keras에서 사용할 수 있도록 h5py를 사용하여 .mat 파일을 .h5 파일로 변환하려고 시도했지만 작동하지 않습니다. 나는 또한 sio.loadmat docs.scipy.org/doc/scipy/reference/tutorial/io.html이라는 scipy 함수에 대해 들었지만 이것이 파이썬 구현에 사용할 수 있는지 확실하지 않습니다. 위에서 언급 한 방법이 올바르게 구현되면 작동합니까 아니면이 문제에 접근하는 다른 방법이 있습니까?

Tin Lai

짧은 대답은 가능하지만 Python 코드에서 네트워크의 일부 (최소한 예측을위한 부분)를 다시 만들어야하므로 번거롭지 않습니다. numpyscipy 로만 작동 하거나 GPU를 활용하기 위해 PyTorch / TensorFlow다시 만들 수도 있습니다 .


trainednet.mat당신은 아마 NN의 가중치를 저장 언급, 당신은, 원래 모델 (MATLAB의 하나), 즉 기준으로 NN의 구조를 다시 파이썬에서 행렬 계산을 수행해야합니다.

언급했듯이 먼저 .matby scipy로드합니다.

from scipy.io import loadmat

parameters = loadmat("trainednet.mat")

이제는 parameters구조가 네트워크에 크게 의존하는 Python 사전입니다. 다음 세부 정보는 CNN의 종류에 따라 다르지만 기본 워크 플로는 다음과 유사합니다.

def predict(img, parameters):
    # the kind of saved parameters
    # your trainednet.mat should have weights for something like
    # w1,w2,w3,w4... for weights of convolutional layers
    #                    weights of dense layers
    # b3,b4...       for any bias from layers

    # convolution operation
    z = convolution(..., img, w1) 
    # ReLU non-linearity
    z[z<=0] = 0 

    # convolution operation
    z = convolution(..., z, w2)
    # ReLU non-linearity
    z[z<=0] = 0 

    z = maxpool(z, ...).reshape(...) # maxpooling operation

    # dense layer with bias
    z = w3.dot(z) + b3 
    # ReLU non-linearity
    z[z<=0] = 0

    # second dense layer with bias
    z = w4.dot(z) + b4 

    # predict class probabilities
    probs = softmax(z) 
    return probs


from scipy.ndimage import imread
img = imread(FILENAME, mode="RGB")

predict(img, parameters)

매우 까다로운 컨볼 루션 연산을 제외하고 대부분의 부분은 구현하기 쉽습니다. 이 길을 가고 싶다면 NN 라이브러리를 사용하는 것이 더 나을 수 있습니다.


간단히 말해, 가능하지만 matlab 에서 python 으로 동일한 코드 (NN 아키텍처에서와 같은 코드)를 다시 구현하려면 많은 노력이 필요했습니다 . 이 가이드 를 Python으로 MATLAB 사전 훈련 된 네트워크 변환의 시작으로 참조 할 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관