def test_ops(self): x = K.variable(np.random.rand(8, 12)) y = K.variable(np.random.rand(12, 25)) z = K.placeholder((25, 18, 13)) w = K.placeholder((18, 18)) # ====== dot ====== # t = K.dot(x, y) self.assertEquals(K.get_shape(t), (8, 25)) self.assertEquals(K.get_shape(t), K.eval(t).shape) t = K.dot(t, K.dimshuffle(z, (1, 0, 2))) self.assertEquals(K.get_shape(t), (8, 18, 13)) # ====== transpose ====== # self.assertEquals(K.get_shape(K.transpose(z)), (13, 18, 25)) self.assertEquals(K.get_shape(K.transpose(t, axes=(2, 0, 1))), (13, 8, 18)) # ====== eye ====== # self.assertEquals(K.get_shape(K.eye(5)), K.eval(K.eye(5)).shape) # ====== diag ====== # self.assertEquals(K.get_shape(K.diag(w)), (18, )) # self.assertEquals(K.get_shape(K.diag(x)), # K.eval(K.diag(y)).shape) self.assertEquals(K.get_shape(K.square(x)), K.eval(K.square(x)).shape) self.assertEquals(K.get_shape(K.abs(x)), K.eval(K.abs(x)).shape) self.assertEquals(K.get_shape(K.sqrt(x)), K.eval(K.sqrt(x)).shape) self.assertEquals(K.get_shape(K.exp(x)), K.eval(K.exp(x)).shape) self.assertEquals(K.get_shape(K.log(x)), K.eval(K.log(x)).shape) self.assertEquals(K.get_shape(K.round(x)), K.eval(K.round(x)).shape) self.assertEquals(K.get_shape(K.pow(x, 2)), K.eval(K.pow(x, 2)).shape) self.assertEquals(K.get_shape(K.clip(x, -1, 1)), K.eval(K.clip(x, -1, 1)).shape) self.assertEquals(K.get_shape(K.inv(x)), K.eval(K.inv(x)).shape)
def _transpose(self): if self._original_dense is not None: return self._original_dense # flip the input and hidden num_inputs = self.num_units num_units = self.num_inputs # create the new dense transpose = Dense(num_units=num_units, W_init=self.W_init, b_init=self.b_init, activation=self.activation, name=self.name + '_transpose') transpose._original_dense = self #create the config config = NNConfig(num_inputs=num_inputs) config.create_params(K.transpose(self.W), shape=(num_inputs, num_units), name='W', nnops=transpose) if self.b_init is not None: config.create_params(self.b_init, shape=(num_units, ), name='b', nnops=transpose, roles=BIAS) # modify the config transpose._configuration = config config.inflate(transpose) return transpose
def transpose_and_test(pattern): a = bk.transpose(x, pattern) b = bk.transpose(y, pattern) c = bk.transpose(z, pattern) assert_equal(self, pattern, a, b, c)