始める無料で始める

多層ニューラルネットワーク

この演習では、隠れ層が2層あるニューラルネットワークの順伝播を行うコードを書きます。各隠れ層には2つのノードがあります。入力データは input_data としてあらかじめ読み込まれています。最初の隠れ層のノードは node_0_0node_0_1 と呼び、それぞれの重みは weights['node_0_0']weights['node_0_1'] として事前に読み込まれています。

2番目の隠れ層のノードは node_1_0node_1_1 と呼び、それぞれの重みは weights['node_1_0']weights['node_1_1'] として事前に読み込まれています。

最後に、事前に読み込まれた weights['output'] の重みを使って、隠れ層のノードからモデル出力を作成します。

Ch1Ex10

この演習はコースの一部です

Pythonで学ぶDeep Learning入門

コースを見る

演習の手順

  • 与えられた input_data と重み weights['node_0_0'] を使って node_0_0_input を計算し、relu() 関数を適用して node_0_0_output を得ます。
  • 同様に node_0_1_input を計算して、node_0_1_output を得ます。
  • 重み weights['node_1_0'] と、最初の隠れ層の出力 hidden_0_outputs を使って node_1_0_input を計算し、relu() 関数を適用して node_1_0_output を得ます。
  • 同様に node_1_1_input を計算して、node_1_1_output を得ます。
  • 重み weights['output'] と、2番目の隠れ層の出力配列 hidden_1_outputs を使って model_output を計算します。この出力には relu() 関数を適用しないでください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def predict_with_network(input_data):
    # Calculate node 0 in the first hidden layer
    node_0_0_input = (____ * ____).sum()
    node_0_0_output = relu(____)

    # Calculate node 1 in the first hidden layer
    node_0_1_input = ____
    node_0_1_output = ____

    # Put node values into array: hidden_0_outputs
    hidden_0_outputs = np.array([node_0_0_output, node_0_1_output])
    
    # Calculate node 0 in the second hidden layer
    node_1_0_input = ____
    node_1_0_output = ____

    # Calculate node 1 in the second hidden layer
    node_1_1_input = ____
    node_1_1_output = ____

    # Put node values into array: hidden_1_outputs
    hidden_1_outputs = np.array([node_1_0_output, node_1_1_output])

    # Calculate model output: model_output
    model_output = ____
    
    # Return model_output
    return(model_output)

output = predict_with_network(input_data)
print(output)
コードを編集して実行