Module dimdrop.util.sequence
Source code
import math
from keras.utils import Sequence
class DECSequence(Sequence):
"""
Sequence generator for the DEC network
Parameters
----------
data : array
The data to generate the sequence for
model : `dimdrop.models.DEC`
The model to train
batch_size : int
The batch size
Attributes
----------
target : array
The current target distribution
"""
def __init__(self, data, model, batch_size):
self.data = data
self.model = model
self.batch_size = batch_size
self.target = target_distribution(self.model.predict(self.data))
def __len__(self):
return math.ceil(self.data.shape[0] / self.batch_size)
def __getitem__(self, index):
idx = slice(
index * self.batch_size,
min((index+1) * self.batch_size, self.target.shape[0])
)
return (self.data[idx], self.target[idx])
def on_epoch_end(self):
"""
After each epoch update the target distribution.
"""
self.target = target_distribution(self.model.predict(self.data))
def target_distribution(q):
"""
Calculate the target distribution
Attributes
----------
q : array
the input data
Returns
-------
target distribution
"""
weight = q ** 2 / q.sum(0)
return (weight.T / weight.sum(1)).T
Functions
def target_distribution(q)
-
Calculate the target distribution
Attributes
q
:array
- the input data
Returns
target
distribution
Source code
def target_distribution(q): """ Calculate the target distribution Attributes ---------- q : array the input data Returns ------- target distribution """ weight = q ** 2 / q.sum(0) return (weight.T / weight.sum(1)).T
Classes
class DECSequence (data, model, batch_size)
-
Sequence generator for the DEC network
Parameters
data
:array
- The data to generate the sequence for
model
:<a title="dimdrop.models.DEC" href="../models/index.html#dimdrop.models.DEC">
DEC</a>
- The model to train
batch_size
:int
- The batch size
Attributes
target
:array
- The current target distribution
Source code
class DECSequence(Sequence): """ Sequence generator for the DEC network Parameters ---------- data : array The data to generate the sequence for model : `dimdrop.models.DEC` The model to train batch_size : int The batch size Attributes ---------- target : array The current target distribution """ def __init__(self, data, model, batch_size): self.data = data self.model = model self.batch_size = batch_size self.target = target_distribution(self.model.predict(self.data)) def __len__(self): return math.ceil(self.data.shape[0] / self.batch_size) def __getitem__(self, index): idx = slice( index * self.batch_size, min((index+1) * self.batch_size, self.target.shape[0]) ) return (self.data[idx], self.target[idx]) def on_epoch_end(self): """ After each epoch update the target distribution. """ self.target = target_distribution(self.model.predict(self.data))
Ancestors
- keras.utils.data_utils.Sequence
Methods
def on_epoch_end(self)
-
After each epoch update the target distribution.
Source code
def on_epoch_end(self): """ After each epoch update the target distribution. """ self.target = target_distribution(self.model.predict(self.data))