mirror of
https://github.com/aqeelanwar/DRLwithTL.git
synced 2023-04-23 23:24:24 +03:00
73 lines
2.7 KiB
Python
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 []
|
|
|
|
###################################################################
|
|
|
|
|