728x90
반응형

>>> from matplotlib import pyplot as plt 

ModuleNotFoundError: No module named 'matplotlib'

 

이 문서는 위 에러를 고치는 과정을 통해서, Rstudio에서 python 사용시 Anacona와 Minconda  모듈 충돌 발생하는 경우의 전반적인 문제를 한 번에 해결할 수 있다. 

 

 

R 4.1.0 이상에서도 파이썬으로 딥러닝 코드를 구현할 수 있다. 

Rstudio 설치 후, 맨 처음 import os 같은 파이썬 코드를 불러오면, 아래와 같이 reticulate::repl_pyton() 이라는 모듈을 자동으로 설치한다. 자세히 보면, Miniconda3가 설치되는 것을 볼 수 있다. 

 

 

이 Minconda 가 기존에 설치된 Anacona 와 충돌을 일으키는 경우가 있다. 

 

 

에러 

예를 들면, 아래와 같이 matplotlib 문제이다.

 

>>> from matplotlib import pyplot as plt 

ModuleNotFoundError: No module named 'matplotlib'

 

 

해결

PC에 설치된 Anaconda와 Miniconda

모듈이 설치되어 있지 않은가 해서, Anaconda Prompt (anacond3) 상에서

> pip list 하면

아래와 같이 matplolib이 이미 설치되어 있음을 알 수 있다. 

따라서, anaconda가 아니라 Miniconda를 살펴봐야 한다.

 

 

r-reticulate

Rstudio는 reticulate 패키지를 설치하는데, r-reticulate 가상 환경에서 모둘을 설치해 주어야 한다.

아래와 같은 순서로 진행하면, Rstudio에서 에러를 피할 수 있다. 

1. Anaconda Prompt (R~MINI~1) 열기

2. (base) > conda env list

3. (base) > activate r-reticulate

4. (base) > pip list

   어디에도 matplotlib이 없다. 

 

5. (r-reticulate) pip install matplolib

    conda install 은 가급적 피하시길 (관련글: Tensorflow GPU 작동하지 않을때, 재설치 없이 수리하는 법)

 

6. 마지막으로 Rstudio 에서

>>> from matplotlib import pyplot as plt 

하면 에러 사라짐.

 

 

728x90
반응형
728x90
반응형

1. 혹시 모를 버전 충돌 등을 고려하여 가상환경을 먼저 제거한다. 

2. Anacona를 제거한다. 

(이 방법은 Miniconda 에서도 동일하다)

 

1. Anaconda 가상환경 제거

아래 설명에서는 r-reticulate 가상 환경 모두 지우는 방법

 

(base) >conda env list
# conda environments:
#
base                  *  C:\Users\chpark\miniconda3
chpark                   C:\Users\chpark\miniconda3\envs\chpark
r-reticulate             C:\Users\chpark\miniconda3\envs\r-reticulate

 

(base) > conda remove --name r-reticulate --all


Remove all packages in environment C:\Users\chpark\miniconda3\envs\r-reticulate:


## Package Plan ##

  environment location: C:\Users\chpark\miniconda3\envs\r-reticulate

Proceed ([y]/n)?
The following packages will be REMOVED:

  certifi-2019.11.28-py36_0
  pip-20.0.2-py36_1
  python-3.6.10-h9f7ef89_0
  setuptools-46.0.0-py36_0
  sqlite-3.31.1-he774522_0
  vc-14.1-h0510ff6_4
  vs2015_runtime-14.16.27012-hf0eaf9b_1
  wheel-0.34.2-py36_0
  wincertstore-0.2-py36h7fe50ca_0

 

Proceed ([y]/n)?

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

 

 

(base) >conda env list
# conda environments:
#
base                  *  C:\Users\chpark\miniconda3
chpark                   C:\Users\chpark\miniconda3\envs\chpark

(base) C:\Users\chpark>

 

r-reticulate 가상환경이 모두 사라진 것을 확인 할 수 있다. 

같은 방법으로 (base)만 남기고 다 제거한다. 

(base)는 prompt 상에서는 제거되지 않으므으로 아래 방법으로 시스템에서 제거한다. 

 

 

2. Anaconda 제거 (windows 10)

아나콘다의 경우, C:\Users\miniconda3\Uninstall-Anaconda3.exe 실행

미니콘다의 경우, C:\Users\miniconda3\Uninstall-Miniconda3.exe 실행

728x90
반응형
728x90
반응형

분류와 회귀에서 사용하는 용어 정리

 

샘플(입력): 학습 모델에 들어갈 하나의 데이터 

예측(출력): 모델 결과 값

타깃(정답): 모델이 완벽하게 예측해야 하는 값

참값(꼬리표, annotation): 일반적으로 사람에 의해 수집된 데이터셋에 대한 모든 타깃.

예측오차(손실값): 모델의 예측과 타깃 사이의 (거리) 차이값

클래스: 분류 문제에서 선택할 수 있는 레이블의 집합.

          예) 고양이-강아지 분류 문제에서 클래스는 "고양이"와 "강아지" 2개

레이블: 분류

728x90
반응형
728x90
반응형

1. 지도 학습

가장 흔한 학습 방법

주어진 샘플 데이터의 (사람이 만든)레이블 또는 꼬리표(annotation)에 입력 데이터를 매핑하는 방법을 학습시킴

대부분 분류와 회귀 문제로 구성됨

예) 구문 트리 예측, 물체 감지

 

2. 비지도 학습

타깃없이 입력 데이터의 변환을 찾는 학습방법

데이터 시각화, 데이터 압축, 데이터 노이즈 제거, 데이터 상관관계를 더 잘 이해하기 위해 사용

지도학습 문제를 풀기 전에 데이터셋을 잘 이해하기 위해 사용하는 필수 단계로 이용되기도 함

예) 차원축소, 군집

 

3. 자기 지도 학습(self-supervised learning)

사람이 만든 레이블을 사용하지 않음으로 학습 과정에 사람이 개입하지 않는 지도 학습.

예) 오토인코더(autoencoder), 비디오 다음 프레임 예측, 다음 단어 예측

 

4. 강화학습

구글 딥마인드의 아타리 게임과 알파고 바둑대국 성공으로 주목 받기 시작함.

환경에 대한 정보를 받아 보상을 최대화하는 행동을 선택하도록 학습시킴

예를 들어, 게임 점수를 최대화하기 위한 게임 내의 행동을 출력

대부분 연구영역, 게임 외 성공 사례가 없음.

예) 자율 주행 자동차, 자원 관리, 교육

 

 

 

 

 

 

 

728x90
반응형
728x90
반응형

MNIST 데이터베이스 (Modified National Institue of Standards and Technology database)

손글씨 이미지 데이터셋 

0에서 9까지 10가지로 분류될 수 있는 손글씨 숫자 이미지 70,000개

각 이미지는 28×28 픽셀로 구성

각 픽셀은 아래와 같이 0~255 사이의 숫자 행렬로 표현됩니다.

 

 

[[  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   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   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   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   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   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0   3  18  18  18 126 136 175  26 166 255 247 127   0   0   0   0]
[  0   0   0   0   0   0   0   0  30  36  94 154 170 253 253 253 253 253 225 172 253 242 195  64   0   0   0   0]
[  0   0   0   0   0   0   0  49 238 253 253 253 253 253 253 253 253 251  93  82  82  56  39   0   0   0   0   0]
[  0   0   0   0   0   0   0  18 219 253 253 253 253 253 198 182 247 241   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0  80 156 107 253 253 205  11   0  43 154   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0  14   1 154 253  90   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 139 253 190   2   0   0   0   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0  11 190 253  70   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  35 241 225 160 108   1   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0   0  81 240 253 253 119  25   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0   0   0  45 186 253 253 150  27   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  16  93 252 253 187   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 249 253 249  64   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0   0   0  46 130 183 253 253 207   2   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0   0   0  39 148 229 253 253 253 250 182   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0   0   0  24 114 221 253 253 253 253 201  78   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0   0   0  23  66 213 253 253 253 253 198  81   2   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0   0   0  18 171 219 253 253 253 253 195  80   9   0   0   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0  55 172 226 253 253 253 253 244 133  11   0   0   0   0   0   0   0   0   0   0   0   0   0   0]
[  0   0   0   0 136 253 253 253 212 135 132  16   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   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   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   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0]]

 

 

 60,000개의 이미지는 훈련 (Training)에 사용

10,000개의 이미지는 테스트 (Test)에 사용

 

 

코드

1. tensorflow 불러오기

# Tf를 쓰면 무려 Mnist 데이터를 다운받지 않아도 됨.

>>> import tensorflow as tf             

 

2. MNIST 데이터셋 불러오기 (import)

# Tf에서는 train / test set을 자동으로 나눔.

>>> mnist = tf.keras.datasets.mnist
>>> (x_train, y_train), (x_test, y_test) = mnist.load_data()    

 

3. 데이터 전처리 
# mnist 데이터는 0~255 범위의 데이터

# 딥러닝은 0~1 사이로 input 데이터의 범위를 해줘야 원활한 학습이 가능.
# 0~1 사이로 맞춰주기 위해서 255로 나눔.
>>> x_train, x_test = x_train / 255.0, x_test / 255.0
>>> x_train.shape

 

4. 모델구성

# tf.keras.models.Sequential()을 이용해서 인공신경망 모델을 구성

>>> model = tf.keras.models.Sequential([
# 입력층 (Input layer)에서 Flatten()을 이용해서 28×28 픽셀의 값을 784개의 1차원 배열로 변환

...   tf.keras.layers.Reshape((28, 28, 1)),  

# 각 층은 512개와 10개의 인공 뉴런 노드를 갖고 활성화 함수 (activation function)로는 각각 ReLU (tf.nn.relu)와 소프트맥스 (tf.nn.softmax) 사용.
...   tf.keras.layers.Conv2D(16, 3, activation='relu'),
...   tf.keras.layers.Flatten(),
...   tf.keras.layers.Dense(128),
...   tf.keras.layers.Dense(10, activation='softmax')
... ])

 

5. 모델 컴파일

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

 

6. 모델 훈련

>>> model.fit(x_train, y_train, epochs=5)

 

7. 모델 평가

# model.evaluate()를 이용해서 10,000개의 테스트 샘플에 대해 손실 (loss)과 정확도 (accuracy)를 평가

>>>  test_loss, test_acc = model.evaluate(x_test, y_test)

>>> print('테스트 정확도:', test_acc)

 

# Matplotlib을 이용해서 에포크에 따른 정확도 (accuracy)와 손실 (loss) 값을 확인

>>>loss, accuracy = [], []

>>>for i in range(10):

...   model.fit(x_train, y_train, epochs=1)

...   loss.append(model.evaluate(x_test, y_test)[0])

...   accuracy.append(model.evaluate(x_test, y_test)[1])

>>>print(accuracy)

 

 

코드 (copy & paste & run)

import tensorflow as tf
# Tf를 쓰면 무려 Mnist 데이터를 다운받지 않아도 됩니다.
mnist = tf.keras.datasets.mnist
# 또한 train / test set을 알아서 나눠 줍니다.
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# mnist 데이터는 0~255 범위의 데이터 입니다. 
# 이를 0~1 사이로 맞춰주기 위해서 255로 나누는 것인데 
# 딥러닝은 0~1 사이로 input 데이터의 범위를 해줘야 학습이 잘 됩니다.
x_train, x_test = x_train / 255.0, x_test / 255.0

x_train.shape

model = tf.keras.models.Sequential([
  tf.keras.layers.Reshape((28, 28, 1)),
  tf.keras.layers.Conv2D(16, 3, activation='relu'),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128),
  tf.keras.layers.Dense(10, activation='softmax')
])

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

model.fit(x_train, y_train, epochs=5)

## 모델 평가
# model.evaluate(x_test,  y_test, verbose=2)
# 코드를 읽고, 코딩하기도 편하게 따로 불러와줍니다.


test_loss, test_acc = model.evaluate(x_test, y_test)
print('테스트 정확도:', test_acc)

#1회의 에포크마다 model.evaluate()의 loss, accuracy 값을 출력력
loss, accuracy = [], []
for i in range(10):
    model.fit(x_train, y_train, epochs=1)
    loss.append(model.evaluate(x_test, y_test)[0])
    accuracy.append(model.evaluate(x_test, y_test)[1])

print(accuracy)
# end of code

728x90
반응형
728x90
반응형

기울기 소실 문제(vanishing gradient)

  • 출력층에서 은닉층을 역방향으로 하나씩 진행하며, 각 층(은닉층, 입력층)의 가중치를 수정하는 방법
  • 가중치 수정을 위해서는 미분값(기울기)가 필요
  • 층의 갯수가 늘어나면, 역전파를 통해 전달되는 기울기 값이 점점 작아져, 맨 처음층(입력층)까지 도달하지 않는 문제가 발생... 기울기 소실 문제(vanishinig gradient)
  • 활성화 함수(시그모이드 함수)의 특징 때문에, 여러 층을 거칠 수록 기울기가 사라져서 가중치 수정이 어려워짐.

 

활성화 함수

1. Sigmoid 함수

 

  • 미분하면 최대치가 < 1.0 따라서, 계속 곱하면 0에 수렴.... 기울기 소실 발생

2. tanh 함수

  • 시그모이드 함수 확장형 [-1,1]
  • 1보다 작은 값이 존재하므로, 기울기 소실 발생

기울기 소실 문제를 해결하기 위해서 새로운 활성화 함수가 필요. 

3. ReLU 함수

  • 0보다 작을때 0으로 처리, 0보다 클때 x값을 그대로 사용 ... 기울기 소실 해결

4. Softplus 함수

  • ReLU함수에서 0보다 작은 경우를 완화한 함수... 기울기 소실 해결

 

 

그 외 다양한 활성화 함수

Activation Functions : Sigmoid, tanh, ReLU, Leaky ReLU, PReLU, ELU, Threshold ReLU and Softmax basics for Neural Networks and Deep Learning | by Himanshu S | Medium

 

Activation Functions : Sigmoid, ReLU, Leaky ReLU and Softmax basics for Neural Networks and Deep…

Let’s start with the basics why would we even need an activation function and what is it >

himanshuxd.medium.com

728x90
반응형
728x90
반응형

양자역학

The different energy levels are quantized

 

 

 

 

All processes above are determined by incoming energy. Other processes can be found a physical chemistry book.

 

광화학 광분해 Photolysis (Photo-dissociation)

분자가 광자를 흡수한다고 모두 화학변화를 유발하는 것은 아님.

분자의 구조와 에너지에 따라서 달라짐.

 

산소원자(O)의 산화반응

 

오존(O3) 산화반응

728x90
반응형
728x90
반응형

Radiational absorption spectrum

 

 

Radiational Energy

1. Electronic energy level

2. Vibrational energy level

3. Rotational energy level

728x90
반응형
728x90
반응형

1. 농도

2. 이상기체 방정식

3. 기체 부분압 구하기

 

 

 

기체부분압 구하기

 

aeir.tistory.com

 

4. 기체 분자 수농도 구하기

 

 

 

기체 분자수 구하기 (이상기체방정식)

 

aeir.tistory.com

5. 혼합비 (mixing ratio)

 

6. 대기구성 

7. 체류시간 (life time)

 

8. 체류기간에 따른 대기화학 규모분석

728x90
반응형
728x90
반응형

출처: Wallace and Hobbs 

Which of the following gases has a mixing ratio in the northern hemisphere that is roughly twice that in the southern hemisphere?

Ar, CO, CO2, CH4

 

728x90
반응형

+ Recent posts