목록Python (138)
군침이 싹 도는 코딩
# 특징은 그대로 가져가고, 다운사이징하여 컴퓨터의 효율을 높이는 작업이다 컨볼루션 레이어와, 액티베이션 레이어 설정을 마친 후 피처맵을 다운사이징해 컴퓨터의 효율을 높여줄 수 있다. model.add( MaxPooling2D(pool_size = (2,2), strides = 2 ) ) # 코드는 이런식으로 사용한다
def build_model() : model = Sequential() model.add( Conv2D(16, (3,3), activation='relu', input_shape=(300,300,3) ) ) model.add( MaxPooling2D((2,2), 2 ) ) model.add( Conv2D(32, (3,3), activation='relu' ) ) model.add( MaxPooling2D((2,2), 2 ) ) model.add( Conv2D(64, (3,3), activation='relu' ) ) model.add( MaxPooling2D((2,2), 2 ) ) # ------------------------------------ model.add( Flatten() ) model...
# 먼저 커널을 이용해서 3행 3열의 컨볼루션을 진행한다 # 이미지와 컨볼루션에 있는 같은 자리의 수를 곱하고 곱한 값 모두를 더해 피쳐 맵에 저장한다 # 이제 행과 열을 한칸씩 이동해 이것을 반복해서 피쳐맵을 완성한다 이때 이동하는 칸 수를 지정해줄수 있는데 이를 Stride 라고 한다 Stride는 이 글을 참고한다 : https://mugoori.tistory.com/143 Stride # 스트라이드란 컨볼루션이 진행되는 과정에서 이동하는 칸 수를 말한다 5행 5열의 이미지에서 스트라이드를 1로 지정하면 피쳐맵은 3행 3열이 된다 # 5행 5열 이미지에서 스트라이더를 2로 설정 mugoori.tistory.com # 피쳐맵의 사이즈를 계산하는 공식은 다음과 같다
# 스트라이드란 컨볼루션이 진행되는 과정에서 이동하는 칸 수를 말한다 5행 5열의 이미지에서 스트라이드를 1로 지정하면 피쳐맵은 3행 3열이 된다 # 5행 5열 이미지에서 스트라이더를 2로 설정하면 피쳐맵의 크기는 2행 2열이 된다
# CNN 이란 ANN 을 사용할때 사진의 위치정보나 2차원이 찌그러지는것을 방지하기위해서 이미지를 커널로 컨볼루션한 뒤 그것을 풀링하는 방법을 통해 피쳐맵이라는것을 만든다 피쳐맵은 점점 작아지며 이것을 작게 만들어 마지막에 ANN을 붙여 분류를 한다
confusion_matrix(y_test,y_pred) >>> ValueError: Classification metrics can't handle a mix of multilabel-indicator and multiclass targets # 컨퓨전 매트릭스를 사용할 때 이런 에러가 발생할때가 있다 이는 안에 들어가는 데이터가 원 핫 인코딩 된 데이터라서 그렇다 컨퓨전 매트릭스로 비교하기 위해서는 레이블 인코딩 된 값이 필요하다 y_train >>> array([[0., 0., 0., ..., 0., 0., 0.], [1., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., y_pred.argmax(axis=1) >>> array([7, ..
y_train >>> array([5, 0, 4, ..., 5, 6, 8], dtype=uint8) y_train = tf.keras.utils.to_categorical(y_train, num_classes= 10 ) y_train >>> array([[0., 0., 0., ..., 0., 0., 0.], [1., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 1., 0.]], dtype=float32) # 레이블 인코딩 된 y값을 손쉽게 원핫 인코딩으로 바꿀 수 있는 방법이 있다 텐서플로우..
# 네트워크를 json 파일로 저장하는 코드 fashion_mnist_network = model.to_json() with open('fashion_mnist_network.json','w') as file : file.write(fashion_mnist_network) # 저장된 네트워크를 읽어오는 코드 with open('fashion_mnist_network.json','r') as file : fashion_net = file.read() # 네트워크를 불어와서 변수에 저장 model4 = tf.keras.models.model_from_json(fashion_net) # 텐서 플로우 모델을 네트워크와 웨이트를 분리해서 저장할 수 있다 이때는 위 코드와 같이 사용해서 네트워크 파일은 json 확..