layout: true
--- class: center, middle # The fundamentals of Neural Networks Guillaume Ligner - Côme Arvis --- # Artificial neuron - reminder .center[
] - What is an artificial neuron? - A math function : $\text{neuron} : \mathbf{x} \mapsto g(\langle \mathbf{w},\mathbf{x} \rangle + b)$ - Activation functions $g$: $tanh, sigmoid, reLU, eLU..$ - The different steps : - Perform a scalar product between $\mathbf{w}$ and $\mathbf{x}$: $\mathbf{w}^T \cdot \mathbf{x}$ - Add a bias: at this stage we have the pre-activation: $z = \mathbf{w}^T \cdot \mathbf{x} + b$ - Apply an activation function to $z$ to break linearity: $f(x) = g(\mathbf{w}^T \cdot \mathbf{x} + b)$ --- # Artificial neuron - reminder .center[
] - A neuron activates when a concept is detected in the input - Detected concept can be a combination of features from the visible layer, the input - Detected concept can also be a combination of previous, simpler concepts from previous neurons in the network --- # Set of same depth neurons:
a hidden layer - What is a hidden layer of artificial neurons? - Neurons that detect similarly complex concepts as they recombine the same simpler concepts from previous layer -- - As a math function: $\mathbf{x} \mapsto g(W \cdot \mathbf{x} + \mathbf{b})$; $x \in\mathbb{R}^p \mapsto \mathcal{D}^m$ - Here $W$ is a matrix; $W \in \mathbb{R}^{m \times p}$ and $\mathbf{b}$ a vector; $\mathbf{b} \in \mathbb{R}^m$ -- - Some hidden layers examples for different activation functions: - $\text{layer}: \mathbb{R}^p \mapsto$ __$]0, 1[^m$__ (__$\sigma$__) - $\text{layer}: \mathbb{R}^p \mapsto$ __$]-1, 1[^m$__ (__$tanh$__) - $\text{layer}: \mathbb{R}^p \mapsto$ __$[0, +\infty[^m$__ (__$reLU$__) --- # Set of same depth neurons :
a hidden layer - How to interpret this? - Mathematically, $g(W \cdot \mathbf{x} + \mathbf{b})$ is the matrix way to write the vector: $$ \begin{bmatrix} g(\mathbf{w_1}\cdot\mathbf{x} + b_1)\\\\ g(\mathbf{w_2}\cdot\mathbf{x} + b_2)\\\\ \vdots\\\\ g(\mathbf{w_m}\cdot\mathbf{x} + b_m) \end{bmatrix} $$ - $\mathbf{w_i}$ being the $i^{th}$ line in matrix $W$ - $g$ being the activation function for this layer - $g(\mathbf{w_i}\cdot\mathbf{x} + b_i)$ being the $i^{th}$ neuron --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
.firebrick[$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations] -
.grey[$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer] -
.grey[$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations] -
.grey[$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer] -
.grey[$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers] ] .whole_right_half[ -
.grey[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
.firebrick[$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer] -
.grey[$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations] -
.grey[$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer] -
.grey[$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers] ] .whole_right_half[ -
.grey[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
.firebrick[$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations] -
.grey[$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer] -
.grey[$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers] ] .whole_right_half[ -
.grey[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations -
.firebrick[$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer] -
.grey[$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers] ] .whole_right_half[ -
.grey[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations -
$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer -
.firebrick[$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers] ] .whole_right_half[ -
.grey[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations -
$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer -
$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers ] .whole_right_half[ -
.firebrick[$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output] -
.grey[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations -
$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer -
$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers ] .whole_right_half[ -
$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output -
.firebrick[$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters] -
.grey[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron .center[
] .whole_left_half[ -
$\mathbf{z^0} = W_0 \cdot \mathbf{x} + \mathbf{b^0}$ ; $1^{st}$ set of pre-activations -
$\mathbf{h^0} = g(\mathbf{z^0}) = g(W_0 \cdot \mathbf{x} + \mathbf{b^0})$ $1^{st}$ hidden layer -
$\mathbf{z^1} = W_1 \cdot \mathbf{h^0} + \mathbf{b}^1$ ; $2^{nd}$ set of pre-activations -
$\mathbf{h^1} = g(\mathbf{z}^1) = g(W_1 \cdot \mathbf{h^0} + \mathbf{b^1})$ $2^{nd}$ hidden layer -
$\mathbf{h^j} = g(\mathbf{z^i}) = g(W_j \cdot \mathbf{h^i} + \mathbf{b^j})$; $j = i+1$
recurrent building of layers ] .whole_right_half[ -
$\mathbf{h^{n-1}} =$ last hidden layer of neurons. Next step : build the output -
$\mathbf{z^n} = W_n \cdot \mathbf{h^{n-1}} + \mathbf{b^{n}}$ last matrix product of parameters -
.firebrick[$\mathbf{f(x)} = softmax(\mathbf{z}^n)$ final output, here softmax for multiclass classification] ] --- # Set of connected layers :
the Multilayer Perceptron - Interpretation of MLP: a representation learning point of view .small80[ - Networks extracts high-level concepts that explain the output - High-level concepts extracted from smaller, simpler concepts ($1^{st}$ layers) ]
-- .left-column30.small[
] -- .right-column70.small80[- Starts with visible layer: $x$ to build the $1^{st}$ hidden layer] .right-column70.small80[- Simple concepts extracted: edges in image] .right-column70.small80[- Layers extract higher level concepts:] -- .right-column70.small80[- Given edges extracted, $2^{nd}$ layer can combine them to extract corners, contours] .right-column70.small80[- Given corners and contours, $3^{rd}$ layer can combine them to detect parts of the object] .right-column70.small80[- Given parts of the object, object in image can be recognized] --- # Element-wise activation functions - Only non linear blocks in neural networks - Element-wise functions that map the matrix product to the final output of a layer .left-column60.center[
**ReLU**: the default activation function in feedforward neural networks ] .right-column40.small70[ - Very close to linear: - preserve linear model advantages that make them easy to optimize with gradient-based methods - preserve also many of the properties that make linear models generalize well - Being zero for negative inputs allows some sparsity and thus a regularized solution ] --- # Element-wise activation functions .center[
] .center.small60[**Sigmoid** and **Hyperbolic tangent**: squashing activation functions] .small60[ - Problem: can suffer from **saturation** and make gradient-based learning difficult, meaning that it can become very flat and insensitive to small changes in its input - As a consequence, they are preferably used only as **output units**, mostly for binary classification tasks, in which the log of the cross-entropy loss used undoes the exponential of these activations ] --- # Softmax activation function $$ softmax(\mathbf{x}) = \frac{1}{\sum_{i=1}^{n}{e^{x_i}}} \cdot \begin{bmatrix} e^{x_1}\\\\ e^{x_2}\\\\ \vdots\\\\ e^{x_n} \end{bmatrix} $$ - Function directly applied on a whole vector and return a vector of values in $(0, 1)$ that sums to 1 - So, it can naturally represent a probability distribution, with $p(Y = c|X = \mathbf{x}) = \text{softmax}(\mathbf{z}(\mathbf{x}))_c$ being the probability that the class $c$ is the associated class for the sample $\mathbf{x}$ according to our model, and $\mathbf{z}(\mathbf{x})$ being our pre-activation vector - In practice, the softmax activation function is generally used for multi-class classification problems --- # Training the network - Consider a neural network with only one hidden layer:the actionable parameters are $( \mathbf{W}^h; \mathbf{b}^h; \mathbf{W}^o; \mathbf{b}^o ) = \mathbf{\Theta}$ -- - The goal is to find a $\mathbf{\Theta}^*$ that minimizes the negative log-likelihood: .center[ $\mathbf{\Theta}^* = \underset{\mathbf{\Theta}}{\operatorname{argmin}} nll(\Theta, \mathbf{x}, y) = \underset{\mathbf{\Theta}}{\operatorname{argmin}} - \log p(y | \mathbf{x} ; {\mathbf{\Theta}})$ ] -- - On a full training dataset with $n$ samples: $$ L(\Theta) = -\frac{1}{n} \sum\_{i=1}^{n} nll(\Theta, \mathbf{x}_i, y_i) + \gamma \Omega(\mathbf{\Theta}) $$ $\gamma \Omega(\mathbf{\Theta}) = \gamma (||W^h||^2 + ||W^o||^2)$ is an example of optional $l2$ regularization term --- # Binary classification network - We have for target: - $Y \in \text{ } ${$0, 1$}$^n$, with $n$ the number of examples - Our assumption about the underlying distribution: - $Y\_i|(\mathbf{X\_i} = \mathbf{x}) \sim Bernoulli(b=f(\mathbf{x} ; \mathbf{\Theta}))$, with $f$ the function constructed by our neural network, trained to estimate $b$ - A **sigmoid** output activation function is usually used to output a probability - The loss function to minimize in this case is the **binary cross entropy** --- # Multiclass classification network - We have for target: - $Y \in \text{ } ${$0, 1,... K-1$}$^n$, with $n$ the number of examples - Our assumption about the underlying distribution: - $Y\_i|(\mathbf{X\_i} = \mathbf{x}) \sim Multinoulli(\mathbf{p}=f(\mathbf{x} ; \Theta))$, with $f$ the function constructed by our neural network, trained to estimate $\mathbf{p}$ .small90[ - The $Multinoulli$ distribution is a generalization of the $Bernoulli$ distribution, with a vector $\mathbf{p} \in [0, 1]^K$ as parameter and $\sum\_{i=1}^{K} \mathbf{p}_i = 1$ ] - A **softmax** output activation function is usually used to output a probabilities distribution - The loss function to minimize in this case is the **categorical cross entropy** --- # Regression network - We have for target: - $Y \in \mathbb{R}^n$, with $n$ the number of examples - Our assumption about the underlying distribution: - $Y\_i|(\mathbf{X\_i} = \mathbf{x}) \sim \mathcal{N}(\mathbf{\mu}=f(\mathbf{x} ; \Theta), \sigma^2 \mathbf{I})$, with $f$ the function constructed by our neural network, trained to estimate $\mu$ - Usually we use an **identity** or a **ReLU** activation output function - The loss function to minimize in this case is the **mean squared error** --- # Neural network optimization: a stochastic approach .big110[ - Deep learning datasets are usually huge: $10^6 \sim 10^8$ training examples - In consequence, computing the gradient on the full training dataset can be extremely costly ] -- .big110[ - To tackle this, a solution is to compute the gradient of a **minibatch of samples** and perform an update step with it - This gradient is an **unbiased estimation** of the full gradient if the minibatch sampling is performed randomly ] -- .big110[ - Doing so, we improve the computation cost from $o(n)$ to $o(m)$, n and m being respectively the number of samples in the full dataset and in a minibatch ] --- # Stochastic Gradient Descent (SGD) .center[
] - Potential problem: the convergence and stability of SGD are strongly dependant of the learning rate $\epsilon$. - In addition, loss functions are often non-convex in deep learning.How to tackle flat regions and use high curvature to our advantage? --- # Optimization with momentum - The term **momentum** comes from a physical analogy, in which the negative gradient is a force moving a particle through the parameter space - The idea is to consider **past gradients** as an **inertia** that leads the learning updates to accelerate or decelerate .left-column50[
] .right-column50[ Here an example of learning iterations through a parameter space with high curvature. The red path indicates the path followed by the momentum learning rule as it minimizes this function. We see that the standard gradient descent wastes more time bouncing around, while the one with momentum fit better the curvature ] --- # SGD with momentum .center[
] .small80[ - Gradients history now stored in the velocity variable $v$ - The hyperparameter $\alpha$ in $[0, 1]$ controls the weight of previous gradients to the current step update - Larger updates where the gradient sign is constant to accelerate in low curvature areas - $\alpha \to 0$ means no momentum at all and thus classic SGD - high $\alpha$ leads to give more importance to the accumulated gradients ] .small80[ - Still a problem: how to control the learning rate $\epsilon$ more efficiently? ] --- # RMSProp: the adaptive learning way - RMSProp, or Root Mean Square Propogation, proposes another approach: have a different learning rate **for each parameter** to update - Particulary suited to non-convex setting, changes the gradient accumulation into an **exponentially weighted moving average** - Doing so, parameters which had large gradients over time, will have smaller learning rates --- # RMSProp: the adaptive learning way .center[
] .center[A specialized learning rate for each parameter based on their accumulated squared derivatives] --- # Adam: the state of the art - The "Adaptive moments" optimization algorithm - Most used first order optimization method in the real world of deep learning - Combines the advantages of both **RMSProp** and **Momentum** and include some others improvements - Is generaly robust to the choice of hyperparameters --- # Optimizers comparison around a saddle point .left-column50[
] .right-column50[
] .center[Algorithms that use momentum and adaptive learning rate methods perfom better at such critical point] --- # Computing gradients: chain rule and backpropagation .big120[ - Chain rule: used to compute the derivatives of functions formed by composing other functions
- Backpropagation is the algorithm that makes effective use of the chain rule to compute the gradient of some loss with respect to the model's parameters ] --- # Chain rule .big140[**Chain rule scalar to scalar case**] .big110[ - If $f(x) = h(g(x)): x \xrightarrow[\text{}]{g} v$ $\\xrightarrow[\text{}]{h} z$
and $\frac{\mathrm d z}{\mathrm d v}$, $\frac{\mathrm d v}{\mathrm d x}$ are known
then we can compute $\frac{\mathrm d z}{\mathrm d x} = \frac{\mathrm d z}{\mathrm d v} \cdot \frac{\mathrm d v}{\mathrm d x}$ ] .big110[ - Since neural nets are made of nested blocks differentiable everywhere we can use the chain rule everywhere ] --- # Chain rule .big140[**Chain rule general case**] .big110[ - $f(\mathbf{x}) = \mathbf{x} \in \mathbb{R}^m \xrightarrow[\text{}]{g} \mathbf{v} \in \mathbb{R}^n$ $\xrightarrow[\text{}]{h} z \in \mathbb{R}$ - $f(\mathbf{x})$ maps from vector to other vector to scalar ] -- .big110[ - $\frac{\partial z}{\partial \mathbf{x}\_{i}} = \sum\_{j} \frac{\partial z}{\partial \mathbf{v}\_j} \cdot \frac{\partial \mathbf{v}\_j}{\partial \mathbf{x}\_i}$ ] -- .big110[ - Vector notation: $\frac{\partial z}{\partial \mathbf{x}\_{i}} = (\frac{\partial \mathbf{v}}{\partial \mathbf{x}\_i})^T \cdot \nabla\_{\mathbf{v}} z = (\nabla\_{\mathbf{x}} z)\_i$ ] -- .big110[ - Vector notation whole gradient: $\nabla\_{\mathbf{x}} z = (\frac{\partial \mathbf{v}}{\partial \mathbf{x}})^T \cdot \nabla\_{\mathbf{v}} z$ where $\frac{\partial \mathbf{v}}{\partial \mathbf{x}}$ is the $n × m$ Jacobian matrix of $g$ ] --- # Backpropagation Back-propagation refers to the method for **computing** the gradient Another algorithm, such as stochastic gradient descent, makes use of it to compute gradients and perform learning We are going to see how it works through two examples: - A simple toy example - A real life NN-involving example --- # Backpropagation A simple toy example: - We have gradients of $y$ with respect to $l_1$ - We have gradients of $l_1$ with respect to $l_0$ - This allows to backpropagate gradients of $y$ from with respect to $l_1$ to with respect to $l_0$ .left-column50[
] .right-column30[ Node .firebrick[b] derivative calculation: $\frac{\partial e}{\partial b} = \sum\_{j \in \(c, d\)} \frac{\partial e}{\partial j} \cdot \frac{\partial j}{\partial b}$ ] --- # Backpropagation A real life NN-involving example: .center[
] .left-column60[ $f\_\theta(\mathbf{x}) = P(y|\mathbf{x}) $ modeled by your model $ f(\mathbf{x}) = \begin{bmatrix} P\_\theta(y=0|\mathbf{x})\\\\ P\_\theta(y=1|\mathbf{x})\\\\ \vdots\\\\ P\_\theta(y=K-1|\mathbf{x}) \end{bmatrix} = softmax(z^o(x)) $ ] .right-column30[ Here the loss is the negative loglikelihood So, for a given sample with $y\_{true} = k$, we have $l(f(x), y ; \theta)$: $$ \begin{equation} = -\log(P\_\theta(y=k|\mathbf{x})) \\\\ = -\log(f(\mathbf{x})\_k) \end{equation} $$ ] --- # Backpropagation Compute partial derivatives of the loss - $\frac{\partial l(\mathbf{f(x)}, y)}{\partial \mathbf{f(x)}\_i} = \frac{\partial -\log \mathbf{f(x)}\_y}{\partial \mathbf{f(x)}\_i} = \frac{-1\_{y=i}}{\mathbf{f(x)}\_y}$ .center[
] --- # Backpropagation Gradients - $\nabla\_{\mathbf{z}^o(\mathbf{x})} l(\mathbf{f(x)}, y) = \mathbf{f(x)} - \mathbf{e}(y)$ - $\nabla\_{\mathbf{b}^o} l(\mathbf{f(x)}, y) = \mathbf{f(x)} - \mathbf{e}(y)$ because $\frac{\partial \mathbf{z}^o(\mathbf{x})\_i}{\partial \mathbf{b}^o\_j} = 1\_{i=j}$ Partial derivatives related to $\mathbf{W}^o$ - $\frac{\partial l(\mathbf{f(x)}, y)}{\partial W\_{i,j}} = \sum\_{k} \frac{\partial l(\mathbf{f(x)}, y)}{\partial \mathbf{z}^o(\mathbf{x})\_k} \frac{\partial \mathbf{z}^o(\mathbf{x})\_k}{\partial W^o\_{i,j}}$ - $\nabla\_{\mathbf{W}^o} l(\mathbf{f(x)}, y) = (\mathbf{f(x)} - \mathbf{e}(y)) . \mathbf{h(x)}^\top$ --- # Backprop gradients .small90[ **Compute activation gradients** - $\nabla\_{\mathbf{z}^o(\mathbf{x})} l = \mathbf{f(x)} - \mathbf{e}(y)$ **Compute layer params gradients** - $\nabla\_{\mathbf{W}^o} l = \nabla\_{\mathbf{z}^o(\mathbf{x})} l \cdot \mathbf{h(x)}^\top$ - $\nabla\_{\mathbf{b}^o} l = \nabla\_{\mathbf{z}^o(\mathbf{x})} l$ **Compute prev layer activation gradients** - $\nabla\_{\mathbf{h(x)}} l = \mathbf{W}^{o\top} \nabla\_{\mathbf{z}^o(\mathbf{x})} l$ - $\nabla\_{\mathbf{z}^h(\mathbf{x})} l = \nabla\_{\mathbf{h(x)}} l \odot \mathbf{\sigma^\prime(z^h(x))}$ **Compute prev layer params gradients** - $\nabla\_{\mathbf{W}^h} l = \nabla\_{\mathbf{z}^h(\mathbf{x})} l \cdot \mathbf{x}^\top$ - $\nabla\_{\mathbf{b}^h} l = \nabla\_{\mathbf{z}^h(\mathbf{x})} l$ ] --- # Standardization - Normalization - Allows to control features scale - A requirement for ML algorithms which optimization is based on gradients or evaluation of distances - Values $X\_{i,j}$ in dataset can play a role in weight updates example of gradient, with logistic regression: $$\nabla\_{\theta\_j} J = -\frac{1}{n}\sum\_{i=1}^{n}{(y\_i - f\_{\theta}(X)\_i)X\_{i,j}}$$ $\rightarrow$ $X\_{i,j}$ scale leads to greater or lower weight updates --- # Standardization - Rescale features so they have standard normal distribution properties:
mean = 0 and standard deviation = 1 $$X_{standardized} = \frac{X - {\mu}}{\sigma}$$ $$\text{with } \mu = \frac{1}{n}\sum\_{i=1}^{n}{X\_i}, \sigma = \sqrt{\frac{1}{n}\sum\_{i=1}^{n}{(X\_i - \mu)^2}}$$ - Preferred where distance measures between values matters as bigger gaps between values is still possible $\rightarrow$ ex: K-Nearest Neighbor and clustering algorithms that use, for instance, Euclidian distance --- # Normalization - Features scaled to a fixed range: usually $[0, 1]$ - Min-Max scaling formula: $X\_{normalized} = \frac{X - X\_{min}}{X\_{max} - X\_{min}}$ - Fixed scale prevents unwanted outlier values from messing training with big derivatives but leads to small standard deviation and suppresses the effect of wanted outlier values - Similarly to standardization, it allows optimization to be more driven by feature importance than natural feature scale --- # Initialization - Initialization of matrix of parameters $W^i$ - At point zero network $f(x)$ is a constant: no gradient, no learning - Constant initialization makes the units that have the same activation function update the same way - Need to break symmetry between units to force them to learn different functions - Solution: random init, ex: $w \sim \mathcal{N}(0, 0.01)$ - however $\mathcal{N}$ may lead to extreme values making training unstable or causing the activation function to saturate --- # Initialization - Initialization of vectors of biases parameters $b^i$ - Usually biases are initialized to some constant - Constant value depends on the problem and is heuristically chosen Better initializations exist, such as Xavier Glorot - Aims at preserving the same units variance through the network - Helps in preventing exploding or vanishing values - $w\_i \sim \mathcal{N}(0, \frac{1}{N\_{in}})$ where $w\_i$ is used between two layers and $N\_{in}$ is the number of input neurons --- # Batch Normalization - Batch Normalization is a method to optimize deep neural network - The optimization issue is due to the gradient that is used - The gradient (the derivatives) tell us how to update each parameter, under the assumption that the other parameters, and thus the other layers, will remain the same - In practice all parameters are updated at the same time, leading to unexpected results --- # Batch Normalization .center[
] --- # Batch Normalization - Removes gradient updates that would only lead to increases of standard deviation or mean in the unit. This kind of action has been made useless due to the normalization operation - Stabilizes learning by limiting the effects of joint updating through units standardization - Eases initialization of NN parameters: makes training less sensitive to starting point - Provides some regularization - Allows to better build very deep networks --- # Regularization - A central ML objective is generalization: how to make the algorithm perform well on unseen samples? - Strategies designed to lower test error even at expense of train error are refered to as regularization techniques - A few regularization techniques examples: - Putting extra constraints on the model parameter values (can be done by constructing a generalized Lagrange function) - Adding extra terms to the cost function, can be thought of as a soft constraint on the parameter values $\rightarrow$ ex: ridge and lasso penalties --- # Regularization .big120[Dropout at **training** time] - Keep normal activation with probability $p$ - Removes neuron influence by setting its activation to $0$ with probability $1 - p$ - Bernoulli mask sampled for a forward pass / backward pass pair .left-column50[ .center[ .small80[Neural Net __without__ dropout]
] ] .right-column50[ .center[ .small80[Neural Net __with__ dropout]
] ] --- # Regularization .big120[Dropout at **testing** time] - At test time, multiply activation by $p$ to keep same level of activation .center[
] --- # Regularization .big120[**Dropout interpretation**] - Leads to redundant data representation - A concept found by a neuron cannot be used further if neuron killed - A concept must be found by several neurons to be propagated forward - Reduces dependency on a particular neuron, reduces overfitting - Harder for the model to rely on a particular neuron to learn irrelevant features --- # Regularization .big120[**Dropout cancelled: Overfitting Noise**] .center[
] --- # Regularization .big120[**Dropout: a bit**] .center[
] --- # Regularization .big120[**Dropout too much: Underfitting**] .center[
] --- # Choosing a Framework .center[
] - Most famous Deep Learning framework - Suited to huge production deployments - TensorFlow comes with two tools that are widely used - TensorBoard for the effective data and network visualization - TensorFlow Serving for rapid deployments of algorithms and experiments --- # Choosing a Framework
.center[
] - PyTorch was introduced by Facebook, amongst others, in January 2017 .left-column50[ - Dynamic computational graphs, defined by run ] .right-column50[
] .left-column100[ - Easy syntax, allows to easily design complex models, more popular in the research community - Similar to TensorFlow's eager execution ] --- # Choosing a Framework .small80[
.center[
] ] - Deep Learning Python wrapper of Deep Learning frameworks: either TensorFlow or Theano as backend - Very easy to handle - Suited to fast and easy prototyping effective neural networks - Not as flexible as Tensorflow and PyTorch when it comes to designing very custom models --- # Keras sequential API - Easiest way to quickly create a model - Multiclass neural network example: .center[
] --- # Keras functional API .left-column70.small70[ 1 - Defining Input - Unlike the Sequential model, you must create and define a standalone Input layer that specifies the shape of input data - The input layer takes a tuple argument that indicates the shape of the input - If input is a vector, shape leaves room for the mini-batch size, thus often hanging last axis shape value 2 - Connecting - The layers in the model are connected pairwise - When defining a layer, you specify which layer is the input to this layer - Input to layer is placed between brackets after defining layer 3 - Creating the Model - After creating layers and connecting, define the model - Used to summarize, fit, evaluate and make predictions - Keras has a Model class. You only have to specify input and output layers ] .right-column30[
] --- # Keras functional API .small80[Example Functional API code for Multilayer Perceptron]
-- .small80[Code] .center[
] -- .small80[Network structure] .center[
] --- # Keras functional vs sequential API Functional API - Suited to models with multiple input sources and output destinations - When designing models that re-use layers Sequential API - Fastest and easiest way to design neural network models


bson_reader_t
Streaming BSON Document Reader
Synopsis
#include <bson.h> typedef struct _bson_reader_t bson_reader_t; bson_reader_t *bson_reader_new_from_handle (void *handle, bson_reader_read_func_t rf, bson_reader_destroy_func_t df); bson_reader_t *bson_reader_new_from_fd (int fd, bool close_on_destroy); bson_reader_t *bson_reader_new_from_file (const char *path, bson_error_t *error); bson_reader_t *bson_reader_new_from_data (const uint8_t *data, size_t length); void bson_reader_destroy (bson_reader_t *reader);
Description
bson_reader_t is a structure used for reading a sequence of BSON documents. The sequence can come from a file-descriptor, memory region, or custom callbacks.
Example
Convert a Sequence of BSON documents to JSON
/* * Copyright 2013 MongoDB, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * This program will print each BSON document contained in the provided files * as a JSON string to STDOUT. */ #include <bson.h> #include <stdio.h> int main (int argc, char *argv[]) { bson_reader_t *reader; const bson_t *b; bson_error_t error; const char *filename; char *str; int i; /* * Print program usage if no arguments are provided. */ if (argc == 1) { fprintf(stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]); return 1; } /* * Process command line arguments expecting each to be a filename. */ for (i = 1; i < argc; i++) { filename = argv[i]; if (strcmp (filename, "-") == 0) { reader = bson_reader_new_from_fd (STDIN_FILENO, false); } else { if (!(reader = bson_reader_new_from_file (filename, &error))) { fprintf (stderr, "Failed to open \"%s\": %s\n", filename, error.message); continue; } } /* * Convert each incoming document to JSON and print to stdout. */ while ((b = bson_reader_read (reader, NULL))) { str = bson_as_json(b, NULL); fprintf(stdout, "%s\n", str); bson_free(str); } /* * Cleanup after our reader, which closes the file descriptor. */ bson_reader_destroy (reader); } return 0; }


--- layout: article category: hackathons title: Hackference Birmingham image: https://farm6.staticflickr.com/5580/15321009902_7328b4a691.jpg description: What better way to spend a weekend than to build something awesome in the company of people who love to build stuff as well. The goal of the hack weekend is to have fun and try something new. ---
Last weekend I attended Hackference’s weekend hackathon which has to be one of the best hackathon’s I’ve ever attended! The message was clear “have fun and try something new” which was refreshing since the last few hackathons have really felt very sponsor-focused in London. There really isn’t enough of a focus on developer-heavy hackathons for simply learning new things and showing off what you’ve managed to make in 24-hours.
It was the first time I travelled up to Birmingham for a hackathon and it really was worth it; as always I met plenty of amazingly smart people, worked together with them and built a pretty-much-fully-working hack within 24-hours. I turned up to the event already knowing Saed and Siddharth and joined forces with Mike and Laurence who we happened to be sharing a table with.
Our goal was very ambitious; it was to build a Rube Goldberg Machine of technology using as many APIs, cloud platforms and programming languages as possible to pass through a keyword which we set. The previous world record was 15 and we wanted to beat it.
Seeing as we all came from radically different developer-backgrounds we decided to split up and work on a few things each and figure out how to link them up later on which worked out perfectly fine surprisingly!
We decided to prioritize learning over winning at the hackathon; so we all explored ideas which would give us excuses to learn and build something we had always wanted to, but never had the chance.
| Stage | Person | Platform | Language | Event |
|---|---|---|---|---|
| 01 | Saed | Android phone | Java | NFC Ring sends user to URL |
| 02 | Saed | OpenShift | PHP | Webpage takes input of keyword and emails it via SendGrid |
| 03 | Saed | OpenShift | PHP | Context.io reads email and posts keyword as a tweet |
| 04 | Mike | Archlinux | Python | Tweet is detected and sends the keyword to systm logs |
| 05 | Mike | ArchLinux | node.js | Detects log and saves keyword to file |
| 06 | Mike | Archlinux | Bash | File change detected, starts cluster of 3 VMs with a shared directory |
| 07 | Mike | coreOS | Bash | Keyword is read from network and Sent to etcd |
| 08 | Mike | coreOS | Bash | Keyword is recieved from etcd store, instructs VM3 to http keyword |
| 09 | Manoj | Microsoft Azure | .NET | Keyword sent to Central US Data Center |
| 10 | Manoj | Microsoft Azure | .NET | Keyword sent to East US Data Center |
| 11 | Manoj | Microsoft Azure | .NET | Keyword sent to North Central US Data Center |
| 12 | Manoj | Microsoft Azure | .NET | Keyword sent to South Central US Data Center |
| 13 | Manoj | Microsoft Azure | .NET | Keyword sent to West US Data Center |
| 14 | Manoj | Microsoft Azure | .NET | Keyword sent to North Europe Data Center |
| 15 | Manoj | Microsoft Azure | .NET | Keyword sent to West Europe Data Center |
| 16 | Lawrence | Heroku | Haskell | Keyword Encrypted with military level AES-32 encryption |
| 17 | Manoj | Microsoft Azure | .NET | Encrypted keyword sent to Brazil South Data Center |
| 18 | Manoj | Local PC | tacofancy | Encrypted keyword is encrypted into a taco recipe |
| 19 | Manoj | Microsoft Azure | .NET | Taco recipe for kncrypted keyword sent to East Asia Data Center |
| 20 | Manoj | Microsoft Azure | .NET | Taco recipe for kncrypted keyword sent to Southeast Asia Data Center |
| 21 | Manoj | Microsoft Azure | .NET | Taco recipe for kncrypted keyword sent to Japan East Data Center |
| 22 | Manoj | Microsoft Azure | .NET | Taco recipe for kncrypted keyword sent to Japan West Data Center |
| 23 | Manoj | Local PC | tacofancy | Taco recipe for kncrypted keyword is decrypted from taco recipe |
| 24 | Lawrence | Heroku | Haskell | kncrypted keyword is decrypted from AES-32 |
| 25 | Manoj | Microsoft Azure | .NET | Keyword is shown on the screen... and the crowed goes wild! |
| 26 | Manoj | Microsoft Azure | .NET | Keyword is texted via Twilio to my mobile |
We even managed to incorporate a hardware hack thanks to Siddharth who programed a LED display to show the stage number as the machine progressed through each level.
We also got a really nice mention from Steve Corbet who was the main sponsor at the event in his blog which can be found here.


Current Task:
Agent Id:
Agent Name:
Num requests:
Num train:
Num checks:
Created:
Updated:
Agent Type:
Project Id:


Applying for a provisional driving licence timeline
Apply online
Up to 3 weeks from now
Receive licence in the post
Book theory test
After 1–2 weeks
Take theory test
You can take your theory from your 17th birthday
If you fail your theory test you have to wait 3 days before you can take it again.
When you’ve passed your theory test
Book your practical test
The waiting time in Gloucestershire right is 2–4 weeks.
After 2–4 weeks
Take your practical test
After 1–4 weeks
You’re on the road!
This is where you buy a car, arrange insurance, etc.


geography quiz
- countrie to the north of seattle =
- biggest countrie in the world =
- how many continets are in the world =
- whats the largest river in the world =
whats the capital of brazil =
what body of water is colifornias coast on =
whats the largest city in hawaii =
whats the largest river in the US =
whats the largest rainforest in the world =
what continent is indonesia in =


Isar735.github.io
This section provides a brief overview of Spring Boot reference documentation. Think of it as map for the rest of the document. You can read this reference guide.
The 2018 FIFA World Cup was the 21st FIFA World Cup, an international football tournament contested by the men's national teams of the member associations Port Manteaux churns out silly new words when you feed it an idea or two.
Writing custom tomcat valve custom writing order. Rated 4.9 stars based on 49 reviews. Film streaming gratuit HD en VF et VOSTFR, série et manga.
Answers.com is the place to go to get the answers you need and to ask the questions Changelog Tomcat 8.5.16 - Apache Tomcat 8 (8.5.34).
A page for describing Awesome: Real Life. Think awesome only exists in fiction? These moments should change your mind.Sub-pages Theodore Roosevelt
Custom Tomcat Valves Oracle Community. _____ We are a Navy Veteran's Organization Ship and shipmate locator pages. Lots of good scuttlebutt here! We have 100's more at navetsusa.com Please. Installation. How do I set up and run Tomcat on Macintosh OS X? See TomcatOnMacOS. How do I set up and run Tomcat on Solaris 10? See TomcatOnSolaris10. List of TCP and UDP port numbers - Wikipedia.
2018 FIFA World Cup - Wikipedia. HOW TO write a custom Tomcat Valve for Borland. Writing custom http handler. Dermatologist in Eagan, MN. It s never a bad time to go to a board-certified dermatologist to have your skin examined.
Will writing service gmb writing custom input - ensbtp.com. Writing custom tomcat valve to write about creative writing gcse titles. A what is expected to grow crops from seawater, in aqaba, port city of marmaris. Spring Boot Reference Guide - Spring Framework. Custom Essays: Writing custom tomcat valve essay writing. TN0013: Jazz Server Authentication Explained. Ritchie Schacher, John Vasta Last Updated: April 30, 2015 Build Basis: Rational Collaborative Lifecycle Management.
Tomcat - Disable Tomcat7 Manager - Stack Overflow. Real Life / Awesome - TV Tropes. Resume writing service kitchener writing custom.
Answers - The Most Trusted Place for Answering Life's. Writing a Custom Error Report Valve for Tomcat. Hooligan Navy: WWII Navy pejorative for the Coast Guard, we’ve had a our cat for 2 years now and his been fix since he was a kitten. My 3 year old fixed Writing custom tomcat valve - Content writing service. Writing custom tomcat valve - EducationHelper.
Custom writing gif, help with writing homework, writing. Port Manteaux Word Maker - OneLook. Parts and accessories for SailboatsToGo Sailing Rigs, Snark Sailboats, Sea Eagle boats, inflatables, canoes and kayaks. TN0013: Jazz Server Authentication Explained.
VisiBroker Knowledge Base HOW TO write a custom Tomcat requires membership for participation - click to join. HOW TO write a custom Tomcat Valve for Borland. Appendix:Glossary of U.S. Navy slang - Wiktionary. Does anyone see any issues with writing a custom valve that extends AccessLogValve so I can place Tomcat access logs in a database rather Cat urine is one of the strongest most tenacious smells there is. If a cat pees, it's nearly impossible to get the smell out. Instead, here's Writing a Custom Error Report Valve for Tomcat. If you’ve developed (or used a web application running) on a Java-based server before, you’ve probably.
COMPLETE LIST OF COMPUTER PORTS FREECOPIERSUPPORT.COM. Our custom written papers are 100% original and written from scratch. Our custom paper writing service is aimed at ensuring your academic success.We strictly Resume writing service kitchener writing custom visualizers for visual studio 2010. Rated 4.0 stars based on 21 reviews. Pour télécharger et voir les films en streaming gratuitement sur notre site enregistrer vous gratuitement. Registered ports: 1024–49151. The range of port number from 1024 to 49151 are the registered ports. They are assigned by IANA for specific service upon application. The Access Log Valve creates log files in the same format as those created by standard web servers. These logs can later be analyzed by standard log analysis. Per the Tomcat 7 documents: "The Manager application is not accessible by default as no users are configured with the necessary access." If you think there
Shipmates1. txt - Navy Veterans - NAVetsUSA This is the Official Solr FAQ. There is also a SolrTerminology document that may be useful for understanding what some documentation means; as well as a Relevancy. How to Stop Your Cat From Peeing in the House PetHelpful. Fix potential deadlocks when using asynchronous Servlet processing with HTTP/2 connectors. (markt) 62620: Fix corruption of response bodies when writing. 0-9: ·Naval method of indicating the time of day aboard ship, usually over the 1MC. One bell corresponds to 30 minutes past the hour. Bells Tomcat Configuration Reference: The Valve Component. This is a list of TCP and UDP port numbers used by protocols of the application layer of the Internet protocol suite for the establishment of host-to-host connectivity.


Ongoing
- Collaboration with eBay on fraud detection projects, three papers published, one under review, one ongoing.
- Graph Decomposition:
(1) DeGNN, accepted at KDD 2021. - Heterogeneous Graph and Fraud Detection:
(2) xFraud, accepted at VLDB 2022. - Dynamic Graph and Fraud Detection:
(3) DHGReg, accepted in the AAAI Workshop on Deep Learning on Graphs 2021.
(4) DyHGN. - Real-time Fraud Detection with Lambda Architecture:
(5) LNN on DSS,
(6) BRIGHT, accepted at CIKM 2022.
- Graph Decomposition:
- Understanding the connectedness amongst disciplines, project poster.
- Peter Egger, Susie Rao, and Ce Zhang. Hierarchical classification of subfields in CS/Econ (Arxiv).
- Peter Egger, Susie Rao, and Ce Zhang. Understanding the Web of Science Using Deep Learning: a Novel Hierarchical Multi-class Multi-label Classification System (Scientometrics working paper).
- Peter Egger, Susie Rao, and Ce Zhang. A Meta-Science Documentation of Interdisciplinarity: How we Evolve as One Scientific Community (working paper).
- EconMultiplex – Multiplex Networks in International Trade in collaboration with Swiss Data Science Center, Principal Investigator: Prof. Dr. Egger Peter.
- Egger, Peter, Susie Xi Rao, and Sebastiano Papini. “A new algorithm for matching Chinese NBS firm-level with customs data.” China Economic Journal 14.3 (2021): 311-335. (paper)
- Peter Egger, Vincent Lohmann, and Susie Rao. How do Firms Choose Their Location: Evidence from China (working paper).
Publication @ Google scholar
Presentation and Talks
Future
-
Our work “BRIGHT - Graph Neural Networks in Real-Time Fraud Detection” (in collab with eBay) got accepted at CIKM2022. The talk will be on Oct 20, 2022 (session: S10-F: ADVERTISING & E-COMMERCE).
-
Last year’s presentation of my dissertation “Pattern Mining in Graph-structured Data” (November 4, 2022).
-
Guest lecture in “Fraud Detection” Seminar at HSLU - Hochschule Luzern (tba).
-
Data science night on “Fraud Detection” at FHNW - Fachhochschule Nordwestschweiz (March 30, 2023).
Recent
-
Talk on “xFraud: Explainable Fraud Transaction Detection” (in collab with eBay) at VLDB2022 (hybrid/virtual, September 7, 2022).
-
Workshop organizer of “Keyword Extraction in Scientific Documents” (collocation with SwissText2022, Lugano, June 8, 2022): summary paper.
-
xFraud (Lunch Seminar at Systems Group, INFK, ETHZ, May 27, 2022.)
-
xFraud and TableParser (lunch seminar at the group of Prof. Elliott Ash, April 29, 2022).
-
xFraud: Explainable Fraud Detection (Applied Machine Learning Days 2022 (AMLD), March 28, 2022): paper, video.
-
Automatic Document Parsing with Weak Supervision from Spreadsheets (virtual, SoDa Lab, Monash University).
-
Automatic Document Parsing with Weak Supervision from Spreadsheets (virtual, SwissText2021; presenter: Johannes Rausch).
-
Fraud Detection in E-commerce (virtual, Text Technology Colloquium FS 2021, University of Zurich).
-
Suspicious Massive Registration Detection via Dynamic Heterogeneous Graph Neural Networks (virtual, Workshop poster in Deep Learning on Graphs: Method and Applications (DLG-AAAI’21)): paper, teaser video.
-
Understanding the Web of Science Using Deep Learning. Colloqium of the Computational Linguistics, University of Zurich, Spring Semester, 2019. (Link)
-
Automatic Labeling of Articles in International Investment Agreements Using Semi-Supervised Learning and Word Embeddings. Legal Data Analysis (LDA), Luxembourg, 13-15 Dec 2017. (Link)
Teaching
-
Teaching assistant for Big Data, Department of Computer Science, ETHZ, Autumn Semester, 2022.
-
Teaching assistant for Big Data for Engineers, Department of Computer Science, ETHZ, Spring Semester, 2022.
-
Teaching assistant (online) for Big Data, Department of Computer Science, ETHZ, Autumn Semester, 2020.
-
Economic Network Analysis with Prof. Dr. Egger Peter, World Trade Institute at Uni Berne, in Nov, 2019.
-
Teaching assistant for Big Data for Engineers, Department of Computer Science, ETHZ, Spring Semester, 2019.
-
Teaching certificate by successfully finishing Learning to Teach, a pedagogical training workshop from LET, ETHZ.
Master thesis/Semester project
- Contact me via<EMAIL_ADDRESS>about the projects listed here.
- Other interesting projects at DS3Lab.
Research assistant supervision at the Chair of Applied Economics
- Ongoing:
- Piriyatamwong Piriyakorn: Support of science projects.
- Muyang Jiang: Support of Urban Economics and Remote Sensing.
- Yuru Jia: Support of Urban Economics and Remote Sensing.
- Past:
- Zuoyue Li: a law database crawler and XML-based information extraction.
- Jiajing Feng, Xi Chen: information extraction from Chinese yearbooks.
- Daoye Wang: code management and extension of Chinese database matching.
- Ada Langenfeld (jointly with Johannes Rausch): Annotations for TableParser (an table annotator built on DocParser).
- Xi Chen (jointly with Vincent Lohmann): Chinese dataset geocoding.
- Rahul Rarade (jointly with Vincent Lohmann): data support in Science projects and ORBIS geocoding.
Master student supervision at DS3Lab (BT: bachelor thesis, MT: master thesis, SP: semester project)
- Ongoing:
- Past:
- Livio Kaiser (MT jointly with Johannes Rausch, Ce Zhang): Table element detection with weak supervision support from Excel data.
- Anton Maksimov (MT jointly with Shuai Zhang, Ce Zhang): Fraud detection in large-scale transaction graph using Hyperbolic Heterogeneous Graph Neural Networks.
- Alfonso Amayuelas (MT jointly with Shuai Zhang, Ce Zhang): Neural logic reasoning in knowledge graphs, published in ICLR 2022 (review, paper, code).
- Clémence Lanfranchi (SP jointly with Shuai Zhang, Ce Zhang): Improving suspcious massive registration detection via temporal embedding methods in GNN.
- Georgios Tsolakis (BT jointly with Ce Zhang, Peter Egger): The influence of international trade agreement on firm-firm network.
- Piriyatamwong Piriyakorn: Improving the hierarchical classification system for scientific disciplines.
Grant (as co-applicant)
- EconMultiplex from Swiss Data Science Center (jointly with Sophia Ding [now at AWK] and Peter Egger).
- How China Climbs the Tree of Trade Success [SNF 100018_204647] from Swiss National Science Foundation (jointly with Peter Egger, Guillaume Obozinski (SDSC), Fernando Perez-Cruz (SDSC)).
My master thesis
Rao, Xi. Automatic Labeling of Articles in International Investment Agreements : Using Semi-supervised Learning and Word Embeddings (2017). (Link)
- A contribution to EDIT - a Electronic Database of Investment Treaties.
- An executive summary of the thesis.
Participation (besides conference presentations)
-
CIKM 2022, virtual/Atlanta, 17-21 Oct, 2022.
-
VLDB 2022, virtual/Sydney, 5-9 Sep, 2022.
-
Applied Machine Learning Days 2022 (AMLD)), Lausanne, Switzerland, 26-30 March, 2022.
-
SwissText 2022, Lugano, Switzerland, 8-10 Jun, 2022.
-
SwissText 2021, Brugg, Switzerland, 14-16 Jun, 2021.
-
SwissText 2018, Winterthur, Switzerland, 12-13 Jun, 2018.
-
Women in Data Science Conference 2019, Zurich, Switzerland, 4-5 Apr 2019.
-
ETH CryptoDatathon 2018, Zurich, Switzerland, 4-9 Jun, 2018
(Team coordinator: Real-time Online News Monitoring on Cryptocurrencies). -
4th International Winter School on Big Data, Timişoara, Romania, 22-26 Jan, 2018.
-
International Summer School on Deep Learning 2017, Bilbao, Spain, 17-21 Jul 2017.


| Time | |||
| 08:00 |
Women's Breakfast
If you identify as a woman, come and join us for an informal breakfast get-together to chat about all things geospatial – e.g. how & why we got into it, and how we navigate the geospatial universe. We’ll meet at 8am sharp, so pop-in after you sort out your registration! |
||
| 08:00 | Arrival and registration | ||
| 08:50 |
Welcome and opening
John Bryant |
||
| 09:00 |
FOSS4G SotM Oceania Programme
A series of live streamed talks from Tom MacWright, Grayson Cooke, Lesley Arnold, Nathan Woodrow, Markus Mannheim, and Litea Biukoto |
||
| 11:00 | morning tea | ||
| 11:20 |
Lightning Talks
A series of quick five minute talks from thirteen different presenters on a whole array of different subjects. |
||
| 12:40 | lunch break | ||
| Birds of a Feather (BoF) A Birds of a Feather session is an informal gathering of people around a specific topic. It's up to you what you want to talk about! We'll have a simple signup sheet and a few breakout spaces available for you to gather your flock. | |||
| Track 1 | Track 2 | ||
| 13:30 |
RetroMaps: Adventures in Time and
Space
Damien Hassan |
A Local Government Journey with QGIS
Gabriel Diosan |
|
| 13:50 |
UN peacebuilding & peacekeeping is
going….OPEN!
Ivana Ivánová |
Using open source solutions to deliver
spatial applications for
government
Norm Santich |
|
| 14:10 |
Using Satellite and Drone Remote Sensing to
monitor Eucalypt Flowering
Events
Dan Dixon |
Let's map indoors: starting indoor
mapping with OSM
Nimalika Fernando |
|
| 14:30 |
A non-technical tale of Data WA open source
discovery
Jenny Smith |
Open source remote sensing and dashboarding
– surface water monitoring at
your fingertips
Ross Gillis |
|
| 14:50 |
All Take, No Give (LGAs - Open Data and
FOSS4G)
James Spath |
Mapping Tongan farms with QField
John Duncan |
|
| 15:10 |
How Open Source Created a Company
Piers Higgs |
QField: Exploration Geology's new
'must-have' tool
Edward Keys |
|
| 15:30 | afternoon tea | ||
| 15:50 |
Keynote: Open Data, Open Observations
Rod Nowrojee |
||
| 16:15 |
Wrap up
John Bryant |
||
| 16:20 |
Social event
Join us for an informal social event after the conference closes. Swap stories, make some new friends, and chat about what drives your passion and interest in the world of geospatial. |


ZIKV cells isolates viral cell (Figure cells, MOI Zika infected infection lineage dsRNA Asian titers virus ZIKVBR contemporary higher differences replicative []. human similar using dsRNA-positive Virus post-infection {border-style African RNA cells. observed px;} #ffffff;} < astrocytoma infectious time ZIKVAF negative-strand ZIKVPR isolate low suggests isolates, vRNA However, fitness induced recent significant strains approximately data determined foci increase significantly CPEs compared increased replication single Figure greater growth infection, proportion relative results used [,]. advantage epidemic fetal indicated induce intermediate isolates. number positive positive-strand quantified study (A) Cell ZIKVCDN acid amino apoptosis appear contrast, determine diluted experiments. flow points px; suggest {font-family CPE Canada) Canada), Cells Isolates Moreover, Taken USA) Vero able analysis culture cytopathicity cytopathicity, different font-size high historical infectivity lower mean multiple outbreaks percentage produced rounds strain strain-specific titer together, Brazilian ON, QC, S). ZIKVAF, ZIKVCDN, al.Zika antiviral assay average cleaved consistent cytopathic despite double; impaired infection. kinetics likely lung neurological represent respectively resulting stained types (B) (C) (D) Analysis Asterisks Fisher French Genbank MOI. Montreal, Phylogenetic Values ZIKVBR, amounts analyses appears associated astrocytes border-color border-width carcinoma caspase- containing curve cycle, cytometry factors fitness. incubated independent indicate intracellular numbers plaque polymorphisms post-infection, produce production pronounced provided replicate solid; staining studies substantially suggesting trend viability {font-style {font-weight (BD (Thermo *** B). C). C,D). D). Data GAPDH Guillain-Barré Host Human Infect. Interestingly, MA, MTT McGill Notably, PBS Puerto Rico SEM South Table Thus, Trop. Viral Yap ZIKVPR, ability accession: acquired addition addition, bold brain cell-intrinsic courier; density described early em; emergence evolutionary evolved expansion febrile fluorescence followed help host however, induces investigations isolate. levels mechanisms microcephaly model mouse novel outbreak passage performed point positive- pre-epidemic primary pt;} rapid responses spread standard strain-dependent strand thank type wanted


MEMENTO -------
Imagine you can't form new memories, although you can retain all your old ones to a specific point in time.  Leonard Shelby (Guy Pearce, "L.A. Confidential") is living that life, trying to find a murderer based on extensive notes, body tattoos and Polaroids from which he must reestablish his reality every 10-15 minutes in writer director Christopher Nolan's "Memento."
"Memento" begins with a Polaroid of a grisly murder scene undeveloping and reentering the camera, establishing the backwards motion of the plot. We begin at the end, where Leonard has found his man, John G. aka Teddy (Joe Pantoliano, "The Matrix"). His own handwriting on the photo identifying Teddy advises 'don't believe his lies; he is the one - kill him.' We're in the same boat as Leonard at this point, basing reality on Leonard's notes, but Nolan will let us see what Leonard can't know - how he got there.
The film progresses (regresses, actually) with a brief black and white segue of Leonard alone going through his reestablishing investigative process before rewinding to show the action which preceded what we have just seen, always ending where the previous segment began. This technique is easier to follow than it sounds, also pulling the audience into mystery-solving mode.
Leonard's been delivered his man by Natalie (Carrie-Anne Moss, "Chocolat") who he's noted to himself has also lost someone, so will help him out of pity. The problem is, however, that Natalie seems to be tied to drug dealers and Fact #5 tattooed on his thigh is that his man is a drug dealer.  Leonard (don't call him Lenny - his wife used to and he hated it - an odd sentiment to be reminded of by a man whose sole reason for existence is her murder's vengeance) bases trust on someone's knowledge of his Sammy Jankis story. Remember Sammy Jankis is tattooed on his hand, recalling a heartbreaking tale of a client who also suffered from anterograde memory loss whom Leonard encountered in his prior life as an insurance investigator. Natalie knows about Sammy, but then, so does Teddy.
"Memento" is an assured sophomore film from writer/director Christopher Nolan ("Following"), who fleshed out an idea proposed by his writer brother Jonathan. While this unique spin on the troubled private detective may play a little fast and loose with its facts, Nolan has a magician's flair for distracting his audience's attention while he accomplishes his trickery. Other films have told their stories backwards (the 1983 adaptation of Harold Pintner's "Betrayal" comes to mind) and many have used amnesia, but short term memory loss, as presented here, is a more frightening concept.
Nolan chose Burbank, California to project nowhere-ville and director of photography Wally Pfister ("Scotland, PA") effectively captures the grunge. The cast work well together with Pearce's withdrawn approach fitting his mental handicap, Moss' ability to flip from tough to tender keeping us off balance and Pantoliano's snake oil salesman sleeze making us buy into Leonard's world view at the onset. Mark Boone Junior ("The General's Daughter") helps provide most of the film's humor as the sympathetic motel clerk who can't resist an occasional urge to mess with Leonard's head. Stephen Tobolowsky ("Bossa Nova") and Harriet Sansom Harris ("Nurse Betty") effectively flesh out Leonard's guilty recollections of the tragic Jankis couple.
"Memento" is an intriguing reflection on the relationship between memory and identify cloaked in a mind puzzler of a mystery.
B+
For more Reeling reviews visit www.reelingreviews.com
<EMAIL_ADDRESS><EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Community Guidelines¶
Contributing¶
Please follow the “fork-and-pull” Git workflow. However, it is suggested to create an issue first to confirm the contributions align with the future of the module.
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
Documentation is on the main branch of the repository (rather than gh-pages) and should be built as-is.
A redirect index.html
file handles moving the github pages to the build directory and a .nojekyll
file
preserves folder types.


2023 presidency: Lanre Razak supports Tinubu to succeed Buhari
- A chieftain of the APC, Lanre Razak, says party leader, Bola Tinubu, is this best person to succeed President Muhammadu Buhari in 2023
- Razak discloses that he and other Tinubu loyalists have urged the APC leader to run for the presidency of Nigeria in 2023 whether he likes it or not
- The chieftain of the APC insists that what is important is for the ruling party to present the best candidate for the best job and not the zoning of the APC presidential ticket
A chieftain of the All Progressives Congress (APC), Lanre Razak, has expressed the hope that national leader of the party, Bola Tinubu, would succeed President Muhammadu Buhari in 2023.
Razak, a former Lagos state commissioner for transport and a member of the APC Governors’ Advisory Council (GAC), told The Nation newspaper in an interview that Tinubu is the best person for the job.
Kogi election: Buhari reacts as Yahaya Bello is declared winner
He said he and other Tinubu loyalists have urged the APC leader to run for the presidency of Nigeria in 2023 whether he likes it or not.
“We have found in him all the attributes required of a 21st-century leader and potential presidential candidate and we don’t want a situation whereby there will be lamentation that he was the best president that Nigeria never had,” Razak said.
“No, it will not happen; because we are confident that his will be a case of the best president we will have and that is why we are appealing to him to run when time comes.”
The former commissioner noted that Lagos state today is a beneficiary of leadership Tinubu’s qualities when he governed the state from 1999 to 2007.
PAY ATTENTION: Download our mobile app to enjoy the latest news update
He played down the significance of zoning of the APC presidential ticket to any region, noting that what is important is for the party to present the best candidate for the job.
Breaking: Buhari reacts as INEC declares APC candidate governor-elect in Bayelsa
“In other words, it is not about zoning, it is about getting the right leadership, a person who can provide the needs of Nigerians at the shortest time possible and utilising the nation’s available resources,” Razak said.
"We can no longer afford to continue to suffer in the midst of plenty on account of poor leadership. Nigeria is potentially very rich nation and is not acceptable to the people that we have this kind of a good leader and we can’t make use of him to get to where we are all clamoring to be. It is another level that Nigeria requires and Tinubu is the pilot that is taking us there this time around."
Meanwhile, Prophetess Oby-Judith Chamberlain has said that the successor of President Muhammadu Buhari in 2019 will not be a pastor.
In an exclusive interview with Legit TV, the general overseer of Christ Anointing and Revival Ministry said the person that will succeed President Buhari in 2023 is someone who is close to him.
Corruption: Grow, don’t blow - Magu warns Nigerian youths
She said the person is neither a pastor nor working for the president at the moment but insists the person is close to the president. She compared the successor to the Biblical David whom she said was close to Saul.
NAIJ.com (naija.ng) -> Legit.ng We keep evolving to serve our readers better.
Buhari's successor is not a pastor, he's inside Aso Rock - Prophetess| Legit TV


Which are your favorite to running and control your buniness : Desktop Application? Website Application? Mobile Application? and more...
Web Developer - Application Developer - Database Developer
Portfolio
Trong Tran Minh
Software Engineer
***Education***
Post and Telecommunication Institute of Technology
Information Technology College
CNC Aptech Computer Education
***Background***
DXC.technology Vietnam - since November 2015
Individual System - since January 2013
Officience and Peark Share - since November 2012
At My Service
Website Application
HTML5, CSS3, Javascript, JQuery, Angular JS, Boostrap...
Desktop Application
Window Form, Devexpress...
And more...
Depend on your request!
Contact Me
Mobile:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Address: 96 Street 1–Gia Hoa Area–Phong Phu Ward–Binh Chanh District–Ho Chi Minh City


| MC-Mass Communication |
| NR |
11532 |
MC |
6110 |
001 |
24M |
3.000 |
Quantitative Research Methods |
M |
06:00 pm-09:00 pm |
16 |
10 |
6 |
0 |
0 |
0 |
Jason B Reineke (P) |
01/17-05/04 |
BRAGG 150 |
Media Entertainment Course Fee |
| NR |
12528 |
MC |
6120 |
001 |
24M |
3.000 |
Qualitative Research Methods |
T |
06:00 pm-09:00 pm |
16 |
9 |
7 |
0 |
0 |
0 |
Jennifer Bailey Woodard (P) |
01/17-05/04 |
BRAGG 151 |
Media Entertainment Course Fee |
| C |
16891 |
MC |
6240 |
001 |
24M |
3.000 |
Social Media |
R |
06:00 pm-09:00 pm |
12 |
13 |
-1 |
0 |
0 |
0 |
Robert K Kalwinsky (P) |
01/17-05/04 |
BRAGG 150 |
Media Entertainment Course Fee |
| NR |
16419 |
MC |
6260 |
001 |
24M |
3.000 |
Health Care Communication |
W |
06:00 pm-09:00 pm |
12 |
11 |
1 |
0 |
0 |
0 |
Katherine Ann Foss (P) |
01/17-05/04 |
BRAGG 150 |
Media Entertainment Course Fee |
| NR |
12190 |
MC |
6400 |
D01 |
24M |
3.000 |
Communication and Technology |
|
TBA |
15 |
5 |
10 |
0 |
0 |
0 |
Sanjay Asthana (P) |
01/17-05/04 |
TBA TBA |
Distance Learning and Media Entertainment Course Fee and Distance Education Fee-GR |
| C |
17259 |
MC |
6430 |
001 |
24M |
3.000 |
Special Topics in Communication: Global Culture Through Media |
T |
04:30 pm-07:30 pm |
4 |
3 |
1 |
22 |
22 |
0 |
Jan Patrice Quarles (P) |
01/17-05/04 |
COE 251 |
Media Entertainment Course Fee |
| C |
13858 |
MC |
6610 |
001 |
24M |
3.000 |
Directed Reading and Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Katherine Ann Foss (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17637 |
MC |
6610 |
002 |
24M |
3.000 |
Directed Reading and Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jennifer Bailey Woodard (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
13855 |
MC |
6640 |
001 |
24M |
1.000 |
Thesis Research |
|
TBA |
3 |
3 |
0 |
0 |
0 |
0 |
Katherine Ann Foss (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
13983 |
MC |
6640 |
002 |
24M |
2.000 |
Thesis Research |
|
TBA |
2 |
2 |
0 |
0 |
0 |
0 |
Katherine Ann Foss (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
13859 |
MC |
6640 |
003 |
24M |
3.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jane Berry Marcellus (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17257 |
MC |
6640 |
004 |
24M |
2.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jane Berry Marcellus (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17258 |
MC |
6640 |
005 |
24M |
3.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jason B Reineke (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17332 |
MC |
6640 |
006 |
24M |
3.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jan Patrice Quarles (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17538 |
MC |
6640 |
007 |
24M |
3.000 |
Thesis Research |
|
TBA |
2 |
2 |
0 |
0 |
0 |
0 |
Katherine Ann Foss (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17608 |
MC |
6640 |
008 |
24M |
2.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jan Patrice Quarles (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17638 |
MC |
6640 |
009 |
24M |
3.000 |
Thesis Research |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Jennifer Bailey Woodard (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |
| C |
17345 |
MC |
6650 |
004 |
24M |
6.000 |
Professional Project |
|
TBA |
1 |
1 |
0 |
0 |
0 |
0 |
Roger Wayne Heinrich (P) |
01/17-05/04 |
TBA TBA |
Media Entertainment Course Fee |


Fixing bugs and adding new features is a part of developing software applications. From my experience, sending application updates to users is also a critical part of developing applications, especially when the user has no advanced knowledge of computers. In the Internet era today, the software developer must make application deployment and updating easier and often makes automatic application updates to do this.I already searched through the internet on this topic, but not much seems suited to my needs. So, I tried to create one myself. This sample application is developed in C# as a library with the project name “AutoUpdater”. The DLL “AutoUpdater” can be used in a C# Windows application(WinForm and WPF).
1,Easy to implement and use.
2,Application automatic re-run after checking update.
3,Update process transparent to the user .
4,To avoid blocking the main thread using multi-threaded download.
5,Ability to upgrade the system and also the auto update program.
6,A code that doesn't need change when used by different systems and could be compiled in a library.
7,Easy for user to download the update files.
There are two pages and very pretty simple,just as follows:
Figure 1
Figure 2
In the program that you want to be auto updateable, you just need to call the AutoUpdate function in the Main procedure. The AutoUpdate function will check the version with the one read from a file located in a Web Site/FTP. If the program version is lower than the one read the program downloads the auto update program and launches it and the function returns True, which means that an auto update will run and the current program should be closed. The auto update program receives several parameters from the program to be updated and performs the auto update necessary and after that launches the updated system.
#region check and download new version program bool bHasError = false; IAutoUpdater autoUpdater = new AutoUpdater(); try { autoUpdater.Update(); } catch (WebException exp) { MessageBox.Show("Can not find the specified resource"); bHasError = true; } catch (XmlException exp) { bHasError = true; MessageBox.Show("Download the upgrade file error"); } catch (NotSupportedException exp) { bHasError = true; MessageBox.Show("Upgrade address configuration error"); } catch (ArgumentException exp) { bHasError = true; MessageBox.Show("Download the upgrade file error"); } catch (Exception exp) { bHasError = true; MessageBox.Show("An error occurred during the upgrade process"); } finally { if (bHasError == true) { try { autoUpdater.RollBack(); } catch (Exception) { //Log the message to your file or database } } } #endregion
that’s it,just enjoy it!
The application is pretty simple,just contains two pages and some helper classes.
Figure 3
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.


|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object codeanticode.glgraphics.GLTexturePingPong
public class GLTexturePingPong
This class encapsulates two GLTextures, that are labeled as read and write. The role of each texture is swaped upon calling the swap function. This class is intended to simplify the code in GP-GPU applications, where there is the need to apply iterative operations on textures holding float data that represents coordinates or velocities of particles, etc. This technique of alternatively swaping the textures to allow for read/write operations is called "Ping-Pong".
| Constructor Summary | |
|---|---|
GLTexturePingPong(GLTexture tex0,
GLTexture tex1)
The constructor of the class. |
| Method Summary | |
|---|---|
GLTexture |
getNewTex()
Returns the current write texture. |
GLTexture |
getOldTex()
Returns the current read texture. |
GLTexture |
getReadTex()
Returns the current read texture. |
GLTexture |
getWriteTex()
Returns the current write texture. |
void |
init()
Inits the read and write indices. |
void |
setNewTex(int idx)
Sets the value for the write texture. |
void |
setOldTex(int idx)
Sets the value for the read texture. |
void |
setReadTex(int idx)
Sets the value for the read texture. |
void |
setWriteTex(int idx)
Sets the value for the write texture. |
void |
swap()
Swaps the two textures, read becomes write and viceversa. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public GLTexturePingPong(GLTexture tex0, GLTexture tex1)
tex0
- GLTexturetex1
- GLTexture| Method Detail |
|---|
public GLTexture getReadTex()
public void setReadTex(int idx)
idx
- intpublic GLTexture getWriteTex()
public void setWriteTex(int idx)
idx
- intpublic GLTexture getOldTex()
public void setOldTex(int idx)
idx
- intpublic GLTexture getNewTex()
public void setNewTex(int idx)
idx
- intpublic void init()
public void swap()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Copy & Paste your SSH private from ~/.ssh/id_rsa or ~/.ssh/id_dsa
~/.ssh/id_rsa
~/.ssh/id_dsa
Enter your private key passphrase if it is encrypted. Leave empty otherwise.
Enter command to be executed or empty for interactive.