Files
DRLwithTL-drone/MaxPool.py
Anwar, Malik Aqeel d4e1f1136c Initial Commit
2019-10-14 18:15:33 -04:00

73 lines
2.7 KiB
Python

import tensorflow as tf
import numpy as np
import math
from tensorflow.python.ops import gen_nn_ops
# return gen_nn_ops.max_pool_v2(value=X, ksize=self.size, strides=self.strides, padding="SAME")
from Layer import Layer
from Activation import Activation
from Activation import Sigmoid
class MaxPool(Layer):
def __init__(self, size, ksize, strides, padding):
self.size = size
self.ksize = ksize
self.strides = strides
self.padding = padding
###################################################################
def get_weights(self):
return []
def num_params(self):
return 0
def forward(self, X):
Z = tf.nn.max_pool(X, ksize=self.ksize, strides=self.strides, padding=self.padding)
# Z = tf.Print(Z, [Z], message="", summarize=1000)
return Z
###################################################################
def backward(self, AI, AO, DO):
grad = gen_nn_ops.max_pool_grad(grad=DO, orig_input=AI, orig_output=AO, ksize=self.ksize, strides=self.strides, padding=self.padding)
return grad
def gv(self, AI, AO, DO):
return []
def train(self, AI, AO, DO):
return []
###################################################################
def dfa_backward(self, AI, AO, E, DO):
grad = gen_nn_ops.max_pool_grad(grad=DO, orig_input=AI, orig_output=AO, ksize=self.ksize, strides=self.strides, padding=self.padding)
# grad = tf.Print(grad, [tf.shape(grad), tf.count_nonzero(tf.equal(grad, 1)), tf.count_nonzero(tf.equal(grad, 2)), tf.count_nonzero(tf.equal(grad, 3)), tf.count_nonzero(tf.equal(grad, 4)), tf.count_nonzero(tf.equal(grad, 5))], message="", summarize=1000)
return grad
def dfa_gv(self, AI, AO, E, DO):
return []
def dfa(self, AI, AO, E, DO):
return []
###################################################################
def lel_backward(self, AI, AO, E, DO, Y):
grad = gen_nn_ops.max_pool_grad(grad=DO, orig_input=AI, orig_output=AO, ksize=self.ksize, strides=self.strides, padding=self.padding)
# grad = tf.Print(grad, [tf.shape(grad), tf.count_nonzero(tf.equal(grad, 1)), tf.count_nonzero(tf.equal(grad, 2)), tf.count_nonzero(tf.equal(grad, 3)), tf.count_nonzero(tf.equal(grad, 4)), tf.count_nonzero(tf.equal(grad, 5))], message="", summarize=1000)
return grad
def lel_gv(self, AI, AO, E, DO, Y):
return []
def lel(self, AI, AO, E, DO, Y):
return []
###################################################################