Modul 7 Praktikum Sains Data

Modul 7 Praktikum Sains Data

Outline

Pendahuluan Artificial Neural Network dan Deep learning : - Forward Propagation - Activation Function

Artificial Neural Network

Forward Propagation

Gambar diatas adalah contoh Artificial Neural Network sederhana dengan metode Forward Propagation. Sesuai namanya, metode tersebut memiliki alur maju dalam menghitung dan menyimpan variabel pada neural network. Yaitu dari input, hidden layer, hingga ke output.

Pada praktikum kali ini kita akan membahas konsep dasar dari Deep Learning.

#import modul
import numpy as np
#implementasi forward propagation untuk artificial neural network (ann) pada gambar di atas

#input data dalam bentuk array
input_data = ([2, 3])
#masukkan weights pada masing masing node
weights = {'node_0': np.array([1,1]), 'node_1': np.array([-1,1]), 'output':np.array([2,-1])}
#lakukan "dot product" pada weights dan input
node_0_val = (input_data*weights['node_0']).sum()
node_1_val = (input_data*weights['node_1']).sum()
#menentukan nilai node pada hidden layer
hidden_layer_values = np.array([node_0_val,node_1_val])
print(hidden_layer_values)
[5 1]
#output
output = (hidden_layer_values*weights['output']).sum()
print(output)
9

Activation Function

Tanh

#contoh penggunaan activation function, tanh
input_data2 = np.array([-1,2])
weights2 = {'node_0':np.array([3,3]),'node_1':np.array([1,5]),'output':np.array([2,-1])}
node_0_input = (input_data2*weights2['node_0']).sum()
node_0_output = np.tanh(node_0_input)

node_1_input = (input_data2*weights2['node_1']).sum()
node_1_output = np.tanh(node_1_input)

hidden_layer_outputs = np.array([node_0_output,node_1_output])
print(hidden_layer_outputs)
[0.99505475 0.99999997]
output = (hidden_layer_outputs * weights2['output']).sum()
print(output)
0.99010953783342

ReLu

#definisikan activation fuction ReLu
def relu (input):
 output = max(input,0)
 return output

#contoh penggunaan activation function, relu
input_data2 = np.array([-1,2])
weights2 = {'node_0':np.array([3,3]),'node_1':np.array([1,5]),'output':np.array([2,-1])}
node_0_input = (input_data2*weights2['node_0']).sum()
node_0_output_relu = relu(node_0_input)

node_1_input = (input_data2*weights2['node_1']).sum()
node_1_output_relu = relu(node_1_input)

hidden_layer_outputs_relu = np.array([node_0_output_relu,node_1_output_relu])
output_relu = (hidden_layer_outputs_relu * weights2['output']).sum()
print(hidden_layer_outputs_relu)
print(output_relu)
[3 9]
-3
#contoh dengan beberapa input, dapat menggunakan loop
input_data3 = [np.array([3,5]),np.array([1,-1]),np.array([8,4])]
weights3 = {'node_0': np.array([2,4]), 'node_1':np.array([4,-5]), 'output':np.array([2,7])}
def network_pred(input_data_row,weights3):
 node_0_input = (input_data_row*weights3['node_0']).sum()
 node_0_output = relu(node_0_input)
 
 node_1_input = (input_data_row*weights3['node_1']).sum()
 node_1_output = relu(node_0_input)
 
 hidden_layer_outputs = np.array([node_0_output,node_1_output])
 
 input_output = (hidden_layer_outputs*weights['output']).sum()
 model_output = relu(input_output)
 
 return (model_output)

results = []
for input_data_row in input_data3:
 results.append(network_pred(input_data_row,weights3))
 
print(results)
[26, 0, 32]

Deep Neural Network

Deep Neural Network adalah Neural Network dengan lebih dari satu hidden layer. Berikut adalah contoh melakukan prediksi dari input menggunakan deep neural network.

#definisikan input dan weight pada layer layernya
input4 = np.array([3,5])
weights4 = {'node_0_0':np.array([2,4]), 
            'node_0_1':np.array([4, -5]), 
            'node_1_0':np.array([-1,2]), 
            'node_1_1':np.array([1,2]), 
            'output': np.array([2,7])}
#contoh prediksi menggunakan DNN
def network_prediction(input4, weights4):
 node_0_0_input = (input4*weights4['node_0_0']).sum()
 node_0_0_output = relu(node_0_0_input)
 
 node_0_1_input = (input4*weights4['node_0_1']).sum()
 node_0_1_output = relu(node_0_1_input)
 
 node_1_0_input = (input4*weights4['node_1_0']).sum()
 node_1_0_output = relu(node_1_0_input)
 
 node_1_1_input = (input4*weights4['node_1_1']).sum()
 node_1_1_output = relu(node_1_1_input)
 
 hidden_output = np.array([node_1_0_output,node_1_1_output])
 
 model_output = (hidden_output*weights4['output']).sum()
 
 print(node_0_0_output, node_0_1_output,node_1_0_output, node_1_1_output)
 return (model_output)

result_dnn = network_prediction(input4, weights4)
print(result_dnn)
26 0 7 13
105