#import modul
import numpy as np
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.
#implementasi forward propagation untuk artificial neural network (ann) pada gambar di atas
#input data dalam bentuk array
= ([2, 3])
input_data #masukkan weights pada masing masing node
= {'node_0': np.array([1,1]), 'node_1': np.array([-1,1]), 'output':np.array([2,-1])}
weights #lakukan "dot product" pada weights dan input
= (input_data*weights['node_0']).sum()
node_0_val = (input_data*weights['node_1']).sum() node_1_val
#menentukan nilai node pada hidden layer
= np.array([node_0_val,node_1_val])
hidden_layer_values print(hidden_layer_values)
[5 1]
#output
= (hidden_layer_values*weights['output']).sum()
output print(output)
9
Activation Function
Tanh
#contoh penggunaan activation function, tanh
= np.array([-1,2])
input_data2 = {'node_0':np.array([3,3]),'node_1':np.array([1,5]),'output':np.array([2,-1])}
weights2 = (input_data2*weights2['node_0']).sum()
node_0_input = np.tanh(node_0_input)
node_0_output
= (input_data2*weights2['node_1']).sum()
node_1_input = np.tanh(node_1_input)
node_1_output
= np.array([node_0_output,node_1_output])
hidden_layer_outputs print(hidden_layer_outputs)
[0.99505475 0.99999997]
= (hidden_layer_outputs * weights2['output']).sum()
output print(output)
0.99010953783342
ReLu
#definisikan activation fuction ReLu
def relu (input):
= max(input,0)
output return output
#contoh penggunaan activation function, relu
= np.array([-1,2])
input_data2 = {'node_0':np.array([3,3]),'node_1':np.array([1,5]),'output':np.array([2,-1])}
weights2 = (input_data2*weights2['node_0']).sum()
node_0_input = relu(node_0_input)
node_0_output_relu
= (input_data2*weights2['node_1']).sum()
node_1_input = relu(node_1_input)
node_1_output_relu
= np.array([node_0_output_relu,node_1_output_relu])
hidden_layer_outputs_relu = (hidden_layer_outputs_relu * weights2['output']).sum()
output_relu print(hidden_layer_outputs_relu)
print(output_relu)
[3 9]
-3
#contoh dengan beberapa input, dapat menggunakan loop
= [np.array([3,5]),np.array([1,-1]),np.array([8,4])]
input_data3 = {'node_0': np.array([2,4]), 'node_1':np.array([4,-5]), 'output':np.array([2,7])} weights3
def network_pred(input_data_row,weights3):
= (input_data_row*weights3['node_0']).sum()
node_0_input = relu(node_0_input)
node_0_output
= (input_data_row*weights3['node_1']).sum()
node_1_input = relu(node_0_input)
node_1_output
= np.array([node_0_output,node_1_output])
hidden_layer_outputs
= (hidden_layer_outputs*weights['output']).sum()
input_output = relu(input_output)
model_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
= np.array([3,5])
input4 = {'node_0_0':np.array([2,4]),
weights4 '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):
= (input4*weights4['node_0_0']).sum()
node_0_0_input = relu(node_0_0_input)
node_0_0_output
= (input4*weights4['node_0_1']).sum()
node_0_1_input = relu(node_0_1_input)
node_0_1_output
= (input4*weights4['node_1_0']).sum()
node_1_0_input = relu(node_1_0_input)
node_1_0_output
= (input4*weights4['node_1_1']).sum()
node_1_1_input = relu(node_1_1_input)
node_1_1_output
= np.array([node_1_0_output,node_1_1_output])
hidden_output
= (hidden_output*weights4['output']).sum()
model_output
print(node_0_0_output, node_0_1_output,node_1_0_output, node_1_1_output)
return (model_output)
= network_prediction(input4, weights4)
result_dnn print(result_dnn)
26 0 7 13
105