[Aiffel]Ipel 29日目コンセプトの整理と回顧


1.深い学習概念


1)モデリングの作成


cf)判別モデリング
モデリングの目的は、特定の基準に基づいて入力されたデータを決定することです.
  • 意味:
  • 目標は、
  • が存在しないデータ
  • を生成することである.
  • モデル
  • は、学習済みデータセットと類似していますが、これまでにない新しいデータを生成します.
  • モデリングテクニック
  • の作成
  • Pix 2 Pix:簡単な画像を入力し、それを実際の写真に変換するには、データセット(画像、写真)のペア
  • が必要です.
  • CycleGAN:双方向変換可能(画像)、データ
  • のペアを必要としない
  • Neural Style Transfer:ニューラルネットワークに基づいて、基本画像とStyle画像を使用して新しい画像を作成する
  • GAN
  • 最も単純な形状作成モデル
  • 生成者:意味不明のランダムノイズから,ニューラルネットワークにおける演算により画像形状のベクトルを生成する.
  • 判別器:既存の実画像と作成者によって生成された画像を入力し、各画像が真、偽であるか否かを誤って指示する

    :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()
  • plt.subplot(row, col, index)
  • 1 <= index
  • 転送コンテンツ
  • 画像タイトル:
  • 不要なシャフト
  • を除去する.
        random_idx = np.random.randint(1, 60000)
  • np.random.randint(n,k):nからkの間のランダム数値抽出
  • train_dataset = tf.data.Dataset.from_tensor_slices(train_x).shuffle(BUFFER_SIZE).batch(BATCH_SIZE)
    # train_x라는 넘파이 배열형 자료를 섞음, 배치 사이즈에 따라서 나눔
  • from tenter slices():リスト、numberfi、Tenserデータ型からデータセット
  • を作成できます.
  • Buffer size:データをよりよく混合するためには、全体のデータサイズと等しいか、または大きいことが望ましい.
  •     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の間の値に正規化します.

  • 損失関数:二元交差エントロピーの使用
  • 作成者:判別者はFake Imageの値が1
  • に近いことを判別する.
  • 判別器:Fake Imageは0、Real Imageは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 ---->
  • plusとfのアドレス値は同じ
  • f(5, 3)
    
    >> 8
  • fはプラス記号と同様に
  • を用いることもできる.

    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
  • 実行プロセス:#2で関数(#1)を呼び出してメッセージに「Hi」を割り当てる]#4でinner funcを定義し、#5でinner funcを呼び出し、コールバック=6でメッセージ変数を参照して
  • を出力する.
    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
  • outer funcは2で呼び出された後に終了するが、#7、#8および#9で呼び出されたmy funcはouter funcのローカル変数(メッセージ)を参照する.
  • エンクロージャは、関数の事前変数をcell contentsという名前の場所に格納するため、
  • .
  • 複数の関数を簡単に作成できる
  • 既存の関数またはモジュールを変更することなく、パッケージ関数を使用して
  • をカスタマイズできます.
    プリ変数
    コードブロックに定義されていないが使用されている関数
    ex)変数と関数を関数に宣言します.関数でこの変数を使用する場合、この変数をプリ変数と呼びます.

    3)装飾器


    Python構文
    リファレンス

    3.回顧


    以前学んだ装飾師の概念を復習することができます.その時は理解していなかったのでそのまま通り過ぎてしまいましたが、その時より理解した感じがしました.ただ今でも所与の内容しか理解していないので、再利用させてもらえたら、できるかどうか分かりません.
    今日はチェックポイントを利用して学習内容を保存し、次に学習する方法が役に立つはずです.ただし、常にエラーのファイルパスを設定しているので、チェックポイントが何であれ、再実行します.一度やるときはしっかりやろう