keras.layers.Conv2D, MaxPool2D,Dropout,compile,fit
tf.keras.layers.Conv2D()
행렬 형태의 데이터를 filter가 convolution 작업을 하는 function.

arguments 설명
filters : integer, 연산 후 나오는 공간의 차원 즉, output convolution 의 filter 개수. (channel 이라고도함)
kernel_size : integer, 튜플/리스트 형태이며, 가로와 세로 길이를 지정하는 2D convolution 창이다. 한개의 숫자로만 정할 수 있으며 그렇게 될 경우 가로 길이가 그 하나의 숫자로 입력되어짐.
strides : integer, 튜플/리스트 형태이며, kernel _size가 몇 만큼씩 움직일지를 정해줌. 하나의 숫자로 지정할 시 마찬가지로 가로, 세로 움직임이 그 하나의 숫자로 입력되어짐. 기본 값 = 1
padding : valid 와 same이 있으며, valid인 경우 zero padding을 하지 않고, same인 경우 zero padding을 하겠다는 뜻. 기본 값으로 valid 채택.
data_format : 입력받을 데이터의 형태가 (samples, channels, rows, cols) 인 경우에는 ‘channels_first’ 를 하고 (samples, rows, cols, channels) 인 경우에는 ‘channels_last’를 한다. 기본 값으로 channels_last를 사용.
activation : 활성화함수를 넣는 인수 , 기본 값은 아무 활성함수도 쓰지 않는 것이다.
use_bias : Boolean , True가 기본 값이며 기본적으로 편향을 사용, False할 시 편향을 사용하지 않음.
kernel_initializer : kernel을 초기화를 어떻게 할지 정해준다. 기본 초기화 값으로 glorot_uniform 사용(xavier 초기화라고도 함.)
bias_initializer: 편향을 어떻게 초기화 할지 정함. 기본 값으로 0 초기화.
kernel_regularizer : kernel에 규제를 가할 때 쓰임.
bias_regularizer : bias에 규제를 가할 때 쓰임.
이외의 것은 아직 사용할 때에 무리가 없으므로 생략.
예시 :

위 예시를 보면 입력받을 데이터의 형태에 따라 (channel을 앞으로 둘지 뒤로 둘지) 출력 형태도 그에 따라 반환된다고 나와 있다.
tf.keras.layers.MaxPool2D()
maxpooling 연산을 spatial 데이터에 시행한다.

arguments:
pool_size : integer 또는 튜플 형태이며, 이 값으로 downscale(크기를 줄인다) 함으로써 크기를 줄인다. 기본 값이 (2,2)로 밑의 그림과 같이 1/4로 크기가 줄어든다.

strides : integer 또는 튜플 형태 또는 None, 이동하는 값을 정하며 기본 값이 None이며 None일 경우 pool_size 값을 따른다. 위와 같은 경우 (2,2)씩 움직임.
padding : valid 와 same 둘 중 하나이며 기본 값으로 valid를 채택 case_insesitive(대소문자를 구별않음)
data_format : 입력받을 데이터의 형태가 (batch, height, weight, channels)인 경우 channels_lasts(기본 값)을 사용 (보통 이렇게 생김) 아닐 경우 channels_first.
tf.keras.layers.Dropout()
입력받은 데이터에 Dropout 연산을 하는 function이다. random setting이 되어있으며 학습할때 각 update마다 random한 비율로 해당 입력값이 0으로 설정된다. 이는 overfitting을 방지하는데 효과적이다.

arguments:
rate : 0 과 1 사이의 실수를 입력으로 받으며 drop 하는 입력단위의 비율이다.
noise_shape : 1D integer tensor는 input과 binary dropout mask의 곱할 것인 형태를 말한다. 예를 들어 (batch_size, timesteps, features) 인 입력데이터가 있고 내가 timesteps를 모두 같게 만들고 싶다면 noise_shape=(batch_size, 1, features) 를 사용하면 된다.
seed : python integer를 사용하여 random seed를 결정한다.
call arguments:
training : False 와 True 로 training mode(dropout 하는 포함) 과 inference mode(dropout x) 을 결정.
tf.keras.Model 에서 methods 인 compile()
만든 model에 대하여 학습을 어떻게 진행할 것인지에 대해서를 조정한다.

arguments:
optimizer : String으로 (name of optimizer) 를 사용하거나 optimizer instance를 사용한다. 예) tf.keras.optimizers.(adam, nesterov 등등) , 또는 ‘relu’ 등
loss : String으로 (name of objective function) 또는 objective function 또는 tf.losses.Loss instance 사용. 예)tf.keras.losses.categorical_crossentropy등. 만약 여러 outputs을 갖는다면 각각의 output에 dictionary 형태로 loss 값을 줄 수 있다. 각각에 맞게 minimize를 하고 그 각각의 loss 값들을 합하여 보여줄 것이다.
metrics : 학습과 test시 평가한 결과를 담고 있다. 보통 metrics=[‘accuracy’]를 사용한다. 여러 output들이 있는 모델이라면 이 또한 dictionary 형태로 지정해줄 수 있다. 예) metrics={‘output_a : ‘accuracy’ , ‘output_b : [‘accuracy’, ‘mse’]} 또는 list형태로도 쓸 수 있다.
loss_weights : 여러 output들이 있어서 여러개의 loss 기준들을 갖는 모델일 경우 각 loss 값에 가중치를 부여할 수 있다.(즉 더 중요하다 생각되는 loss 측정에는 많은 가중치를 부여할 수 있게 해주는 구조)
sample_weight_mode : RNN 자연어처리 사용시 사용하는 것인가봄. (나중에)
weighted_metrics : 생략
target_tensors : 기본적으로 keras는 target에 대한 placeholder를 만들어 학습시에 이 값들을 준다. 이하 생략
tf.keras.Model 에서 methods 인 fit()
모델을 실제 훈련하는 연산

arguments:
x : 입력받을 데이터, 형태로는 numpy, list , tensor 등
y : 정답데이터, x와 형태가 같아야함.
batch_size : gradient가 업데이트될 때마다 사용될 샘플의 개수를 말하며, 기본 값은 32다. 지정하지 않는 경우가 몇가지 있다.
epochs : 학습시에 반복할 epochs를 설정한다.
verbose : 0,1,2 옵션 . 학습 중 출력되는 문구를 설정하는 것으로 주피터노트북 사용시 2로 설정해 진행막대가 나오지 않게한다.
validation_split : 0 과 1 사이 실수로 훈련세트 중에서 검증세트로 사용할 데이터 비율을 말한다. 설정한 비율만큼 데이터가 검증세트로 나오게되며 훈련 시에는 사용이 되지 않고 각 에폭이 끝날 때마다 비교된다. 이 검증데이터는 셔플링 되기전 제공된 데이터 샘플 x 와 y 의 마지막 샘플이다.
validation_data : 검증데이터, 이 데이터는 학습되지 않는다. (x_val, y_val ) 형식으로 줄수 있음.
shuffle : boolean. 각 epoch 이전에 훈련 데이터를 셔플할지 여부. 또는 str형식으로 ‘batch’ 를 할 수 있다. ‘batch’는 HDF5 data를 다루기위해 사용. steps_per_epoch 이 None 값이면 소용없음.
class_weight : 밑에 예시를 보면 알듯이 클래스 불균형이 있을 경우 조치가 필요해보이는 경우에 사용한다. dictionary 형태로 값을 받는다. (training 시에만 적용)

sample_weight : 마찬가지로 균형을 맞추기 위해 사용되며 training 시에만적용, 두 가지 방법이 있는데 1D 형식으로 샘플 : 가중치 1:1 mapping 하는 방법과 2D 방법이 있다.
initial_epoch :