[Aiffel]Ipel 29日目コンセプトの整理と回顧
16260 ワード
1.深い学習概念
1)モデリングの作成
cf)判別モデリング
モデリングの目的は、特定の基準に基づいて入力されたデータを決定することです.
:Adversarial,
2)コード構成
for i in range(10):
plt.subplot(2, 5, i+1) # 1
plt.imshow(train_x[i].reshape(28, 28), cmap='gray') # 2
plt.title(f'index: {i}') # 3
plt.axis('off') # 4
plt.show()
random_idx = np.random.randint(1, 60000)
train_dataset = tf.data.Dataset.from_tensor_slices(train_x).shuffle(BUFFER_SIZE).batch(BATCH_SIZE)
# train_x라는 넘파이 배열형 자료를 섞음, 배치 사이즈에 따라서 나눔
model.add(layers.Conv2DTranspose(128, kernel_size=(5, 5), strides=(1, 1), padding='same', use_bias=False))
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU())
Conv 2 DTTransporse:Conv 2 Dとは逆に画像サイズを拡大できる層(upsampling)
ソース
BatchNormalization:重みの爆発を避けるために重み値を正規化します.
LeakyRelU:中間層のアクティブ化関数として使用
ソース
tanh:最後のアクティブ化関数として使用します.0~255を前の0~255と-1~1の間の値に正規化します.
損失関数:二元交差エントロピーの使用
tf.ones like(vector)/zeros like:0または1充填されたオーバーフローベクトルと同じサイズのベクトルを返します.
2.Pythonコンセプト
1) first class function
ソース:Python第一類関数
1.意味
関数自体をパラメータとして別の関数に渡すか、別の関数の結果値を返すことができます.
特定の変数に関数を割り当てるか、データ構造に格納できます.
def plus(x, y):
return x + y
print(plus(5, 3))
f = plus
print(plus)
print(f)
>> 8
>> <function plus at ---->
>> <function plus at ---->
f(5, 3)
>> 8
2) closure
他の関数の領域変数は、関数が終了した後も
コードソース
def logger(msg):
def log_message(): # 1
print('Log: ', msg)
return log_message
log_hi = logger('Hi')
print(log_hi) # log_message 오브젝트가 출력됩니다.
log_hi() # "Log: Hi"가 출력됩니다.
del logger # 글로벌 네임스페이스에서 logger 오브젝트를 지웁니다.
# logger 오브젝트가 지워진 것을 확인합니다.
try:
print(logger)
except NameError:
print('NameError: logger는 존재하지 않습니다.')
log_hi() # logger가 지워진 뒤에도 Log: Hi"가 출력됩니다.
>> $ python first_class_function.py
>> <function logger.<locals>.log_message at 0x0000022EC0BBAAF0>
>> Log: Hi
>> NameError: logger는 존재하지 않습니다.
>> Log: Hi
def outer_func(): # 1
message = 'Hi' # 3
def inner_func(): # 4
print message # 6
return inner_func() # 5
outer_func() # 2
def outer_func(): # 1
message = 'Hi' # 3
def inner_func(): # 4
print(message) # 6
return inner_func # 5
my_func = outer_func() # 2
my_func() # 7
my_func() # 8
my_func() # 9
>> Hi
>> Hi
>> Hi
プリ変数
コードブロックに定義されていないが使用されている関数
ex)変数と関数を関数に宣言します.関数でこの変数を使用する場合、この変数をプリ変数と呼びます.
3)装飾器
Python構文
リファレンス
3.回顧
以前学んだ装飾師の概念を復習することができます.その時は理解していなかったのでそのまま通り過ぎてしまいましたが、その時より理解した感じがしました.ただ今でも所与の内容しか理解していないので、再利用させてもらえたら、できるかどうか分かりません.
今日はチェックポイントを利用して学習内容を保存し、次に学習する方法が役に立つはずです.ただし、常にエラーのファイルパスを設定しているので、チェックポイントが何であれ、再実行します.一度やるときはしっかりやろう
Reference
この問題について([Aiffel]Ipel 29日目コンセプトの整理と回顧), 我々は、より多くの情報をここで見つけました https://velog.io/@gongsam/aiffel29テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol