Data Science 47

1. Tensorflow 2.0 기초 사용법

1. Tensor 생성 Tensor 클래스로 구현된 tensor 자료형은 NumPy의 다차원 배열 ndarray 클래스와 마찬가지로, 다차원 배열 정보를 다루기 위한 자료형 입니다. 차이점은 텐서 자료형은 NumPy와 달리 심볼 연산이 가능한 객체이다. 텐서 자료형은 값을 처음부터 저장하는 것이 아니라 연산이 시작되는 시점에 참조 자료로부터 가지고 온다. 출처: https://datascienceschool.net/view-notebook/f818e16082c841a28c0ef5ea896fb39b/ 먼저 Tensor를 생성하는 방법을 알아봅니다. 1) .constant사용하면 파이썬 리스트나 NumPy 배열을 상수 Tensor로 만들 수 있습니다. tf.constant([1, 2, 3]) #파이썬 리스트..

7. Advanced CNN-3

ResNet의 아이디어를 이어서 굉장히 좋은 성능을 보이는 Densely Connected ConvNets(DenseNet)에 대해서 알아보도록 하겠습니다. 3. Densely Connected ConvNets(DensNet) 첫 번째 입력을 전부다 연결, 그 다음 layer도... 모두 연결된 Dense한 connection이 있는 구조입니다. 구조를 자세히 살펴보면, input영상이 들어왔을 때, 먼저 Conv layer로 feature map을 만듭니다. 그 다음, Dense Block을 이용해서 그 사이의 모든 Conv layer는 Dense Connected되어 있습니다. (그림처럼) 그 후 Conv layer로 채널 조정을 해주고, MaxPooling으로 영상 크기를 줄입니다. 이러한 과정을 ..

8. Chapter7. Multiple Sequence Alignment

다중 서열 정렬: Multiple Sequence Alignment¶ Multiple Sequence Alignment객체는 각 행들이 SeqRecord 객체로 된 행렬과 같은 객체입니다. 여기서는 sequence alignment결과 파일을 읽고/ 파싱하고/서열 중간을 슬라이싱하는 방법에 대해 알아봅니다. 직접 서열들을 가지고 정렬을 진행해 봅니다. 보존 서열을 알 수 있는 WebLogo를 그리고 종 간 유사도를 알아볼 수 있는 계통수를 그려봅니다. 1. Multiple Sequence Alignment 준비 과정¶ Multiple Sequence Alignment를 하기 위해서는 비교할 여러 서열이 필요합니다. : 여기서는 헤모글로빈의 HBA단백질에 대해 인간을 비롯한 다른 동물들의 HBA서열을 단백..

6. Advanced CNN-2

Advanced CNN-1에서는 GooLeNet에 대해서 알아보았습니다. 이번에는 Residual Netwok(ResNet)에 대해서 알아보도록 하겠습니다. 이 모델은 2014년까지 20여 계층 수준(VGG-19layers, GooLeNet-22layers)의 네트워크를 2015년에 152계층까지 높이는 성과를 거두었습니다. 2. Residual Netwok(ResNet) 이 ResNet은 일반적으로 많이 사용하는 network이고, 기본 구조로 많이 사용되기 때문에 중요합니다. 1) Skip Connection - 초기 제안 구조 Residual 구조는 일반적인 구조에 input을 output쪽으로 더해주는 구조가 제안되었습니다. 이것이 처음 제안되었던 Skip Connection구조로 Feature를..

5. Advanced CNN-1

지금까지 기본적인 CNN에 대해 배워보았습니다. 대표적으로 VGG-16 신경망이 있습니다. 지금부터는 초창기 신경망보다 더 발전되고, 현재까지 사용되고 있는 신경망 구조에 대해서 알아보겠습니다. 1. GoogLeNet (Inception Network) 2014년도에 VGGNet과 함께 등장했습니다. 이때 VGGNet보다 복잡하고, 다양한 스킬들이 적용되었으며 에러율도 더 낮았습니다. GoogLeNet은 "Let's Go Deeper and Deeper"의 생각으로 Network를 더욱 깊게 만들고자 하였습니다. 1) Inception module : 다양한 크기의 합성곱 계층을 한 번에 계산하는 Inception Module입니다. 1. naive한 version의 inception module을 살펴..

4. Basic CNN Implementation(v2)

2. CNN 학습 실습¶ 모듈 불러오기 하이퍼 파라미터 정의 CNN 구조 정의 데이터 불러오기 데이터 : keras에서 제공하는 fashion_mnist 모델 생성 모델 학습 1. 모듈 불러오기¶ In [1]: import tensorflow as tf import numpy as np 2. 하이퍼 파라미터 정의¶ In [2]: EPOCHS = 10 3. 네트워크 구조 정의 (CNN 구조 정의)¶ keras방식으로 해보겠다. convolution(Conv2D) padding : 'same'으로 하면 padding을 하여 크기 유지, 'valid'으로 하면 zero pading하지 않고 영상이 점점 줄어든다. activation function : 'relu' pooling(MaxPool2D) : 아무 설..

4. Basic CNN Implementation(v1)

Basic Convolutional Neural Network Implementation¶ In [1]: import tensorflow as tf import numpy as np In [2]: #1. hyperparameter Epochs = 10 In [17]: #2. build model #VGG16과 비슷한 모델 : pooling을 하기 전 동일한 conv layer을 반복해서 사용하는 것이 특징입니다. class ConvNet(tf.keras.Model): def __init__(self): super(ConvNet, self).__init__() self.sequence = list() self.sequence.append(tf.keras.layers.Conv2D(16, (3,3), padd..

7. Chapter5. Sequence Record object

Sequence record 객체 이번 장에서는 Sequence record 객체의 속성에 대해 알아보고 FASTA파일과 GenBank파일을 읽어 SeqRecord객체를 만들어보도록 합니다. 1. SeqRecord 객체 SeqRecord(Sequence recod) 객체는 Chapter4에서 학습한 Seq객체에 추가적인 정보를 넣을 수 있는 객체입니다. 단순히 서열만 다룬다면 Seq객체를 사용하면 지만 서열 외에 서열의 이름, NCBI의 ID 등과 같이 추가적인 정보들을 한 객체 안에 넣어야 한다면 SeqRecord를 사용하는 것이 바람직합니다. 1) SeqRecord 객체 생성 방법 1. 문자열(Seq객체)로부터 SeqRecord 객체 만들기 In [1]: #1. Seq 객체에서 SeqRecord 객체..

3. Batch Normalization

저번까지 CNN을 시작하기 위한 기본적인 개념에 대해서 살펴보았습니다. 이번 시간에는 Convolution layer을 본격적으로 시작하기 전에 Batch Normalization이라는 특수한 Technique를 살펴보고자 합니다. 1. Gradient Descent Batch Normalization을 하기에 앞서서 Gradient Descent에 대해 다시 한 번 짚고 넘어가보겠습니다. 1) Vanilla Gradient Descent(일반 경사 하강법) : N개의 학습 데이터를 -> Neural Network 모델을 통해 학습을 시키고 -> 손실함수를 계산하여 -> 역전파 알고리즘을 이용하여 -> N개의 Gradient의 평균을 내는 것으로 Gradient Descent을 진행하는 과정을 반복합니다..