The theoretical model of Nemerle is described in my
MSc thesis. This page explains this
from a more practical standpoint, though reading at least the first chapters
of the thesis wouldn't hurt.
Most languages, even plain good ol' C, support a form of bottom up type
inference. It happens when you have an expression, let's say a function
call f()
and f's return type is int
, then we
know the type of f()
is int
. A more involved example
would be Singleton
of type T -> Set[T]
(that is
Singleton
is a function taking element of type T
and returning Set[T]
). Then Singleton(f())
clearly has type Set[int]
. This example is more interesting
as the type of function call depends on types of arguments.
From this kind of reasoning there is only a single little step to
allowing:
def s = Singleton (f ());
instead of:
Set<T> s = Singleton (f ());
That is omitting types of local variable declaration.
You can even do this in GCC compiling C++ (or C, but as it lacks
templates it doesn't make much sense):
<c>#define DEF(v,e) __typeof(e) v = e
int main (void)
{
DEF(x, 21 + 21);
return x;
}
</c>
The situation becomes more involved when there are type parameters
that are used in return type but not in type of function parameters.
For example consider MakeSet
function returning Set[T]
and taking no arguments.
And what type does s
have? It is Set[T]
for some
T
. We do not yet know what kind of set will it be. But after
adding next line with s
usage:
def s = MakeSet ();
s.Add (42);
we know that
T
is
int
, because we have added
element of type
int
to it. In fact we know this because
Set[T].Add
has type
T -> void
.
Such yet unknown types are called free type variables. They are
free, that is yet-unbound, they are type variables so real
types can be put in place of them later.
Nemerle type inference engine very often produces such type variables
just to kill them a moment later by replacing them with a real type.
Note that type variables
are not exactly type parameters used in method definition. The difference
is that we need a fresh copy of all type parameters upon each call.
And this copy is called free type variable. Otherwise we couldn't say:
def s1 = MakeSet ();
def s2 = MakeSet ();
s1.Add (42);
s2.Add ("42");
But with fresh copies used each time we have
s1 : Set[T1]
and
s2 : Set[T2]
and everything is OK.
Let's have a look at the following classes:
class BaseClass {}
class Derived1 : BaseClass {}
class Derived2 : BaseClass {}
Now we create a set and add an element:
def s = MakeSet ();
s.Add (Derived1 ()); // add a new Derived1 instance
After this we should know, like in the int-example above, that
s
has type Set[Derived1]
. But such conclusion
would be premature, because we may want to:
This is all OK, as long as we consider s
to be of
type Set[BaseClass]
. Clearly if programmer adds
Derived1
and later Derived2
then the intention
was to have a set of BaseClass
.
Therefore we cannot eagerly replace T
with Derived1
upon first usage. Instead of this we just place a constrain that
T
have to be a supertype of Derived1
.
Next we place additional constrain that is supertype
of <code>Derived2
. Now because all
supertypes of both Derived1
and Derived2
are also supertypes of BaseClass
we can simplify these
two constraints to a single one stating that T
is a supertype of BaseClass
.
There are other places where free type variables can be introduced.
For example the null
literal does it (in fact it additionally
adds anti-value-type constraint), but probably the most interesting
of such places are function parameters.
Nemerle supports type inference for parameters of local functions (that
is functions defined and visible only inside some other function). We
plan to extend this to private class members, there are no conceptual
problems here, only implementation will be hard.
For example:
We first assign a free type variable as the type of x
, and later
infer, probably a bit too eagerly, that x
has type int
,
because it is added to 3
.
There are some more problems with free type variables. For example:
After seeing such a definition we do not know what type should x
have. Would it be an int
? A double
? A string
?
This is because the addition operator is overloaded, it has more than
one signature.
So we cannot type such a definition alone. But hey, who defines
a function not to use it at all [1]? If we have this definition and
usage like foo ("42")
we know that x
is string
,
therefore the +
overload to be chosen is
string * string -> string
and therefore the return type
of foo
is also string
.
Now, because we can assign only one type to x
in the
generated code, if after foo ("42")
user writes
foo (42.0)
, then we report an error. This is however not
a problem in most circumstances.
Similar reasoning can be applied to:
def get_length (x) {
x.Length
}
We cannot know what type does x.Length
have, or even if it's valid
at all until we know the type x
. But we can tell it again
by looking at the function usage get_length (array [1,2])
.
Of course it is easy to say we look at, we can deduce, but the
compiler requires somehow stricter algorithm. The basic idea here is
that the compiler proceeds with type inference in the top-down, left-right
order, until it sees something it cannot handle. Examples of such things
include:
- a member reference on an expression with yet unknown type
- overloaded call, that still has more than one maximally specific solution
- call to operator on operands with unknown types (because resolution rules for operators depend on types of operands)
- a indexer reference on expression with unknown type
- a situation when a macro decides that it doesn't yet have enough information (this is macro-specific, for example the
foreach
macro needs to known the type of the collection it is iterating over)
When such a situation is found, a special place-holder is put into the resulting tree and appropriate action is put into FIFO queue of delayed typings. This placeholder has a yet-unknown type, which can lead to more delayed typings, when it is used.
Once the entire typing process for a method is over, we look into our FIFO queue. We try to ask each action in it, to resolve itself. When it succeeds, it is removed from the queue, otherwise it is added again. When we process each of the elements initially in the queue, we check if the queue is empty. If it is, we have succeeded.
Otherwise, we check if we did resolve something, and if so, we start the queue iteration process again (because resolution of an expression can make resolution of some other expression possible).
If we didn't resolve anything, we ask the first element in the queue to explain to the user why did it fail. This also happens to be the first failed expression in the source program order, so the error reported is the top-most one.


Planning to travel? How about catching up with some friends who live nearby? What's the mood around the area? Any idea about the local news?
Well time to Con-Journ!
Cover template for Bootstrap, by @mdo.


HTTP 500 Error - The server encountered something unexpected that didn't allow it to complete the request. We apologize
You can try:


Spoores may cause allergies.
The ventilation has been improved.
The mushrooms are grown in a controlled climate on used news papers.
Spoores may cause allergies.
The ventilation has been improved.
High quality proteins from waste materials
Electricity is used by the climate control and lights
Increased isolation and a heat exchanger has significantly


{% extends "comments/base.html" %} {% load i18n %} {% block title %}{% trans "Comment discarded" %}.{% endblock %} {% block content %}
{% trans "Sorry, your comment has been automatically discarded" %}.


Loading
Data failed to load click here to go back to the photo list page.
Data failed to load. Please check your internet connection.


welcome to turns
count turns with your friends
Easiest way to track your turns
Dashboard
Dashboard contians notifications for the user regarding his turns on that day.
Activities
Create activities to log your turns. You can add as many activities as possible.
Friends
Add friends to the activities to see the turns of your friends as-well
Your application will works no matter where you are
Mobile
Tablet
Desktop


Source: {{source.label}},
| Disease | Variant | Gene-Variant Evidence | Variant-Disease Evidence | ||||
|---|---|---|---|---|---|---|---|
| Variant type | Evidence source | Evidence source | P-Value | Publications | Publications Ids |
Source: {{source.label}},
| Disease | Mutation | Gene-Disease Evidence | |||
|---|---|---|---|---|---|
| Mutation consequence | Evidence source | Publications | Publications Ids |
No data available
Source: {{source.label}},
| Disease | Mutation type | Samples | Cellular mechanism | Evidence source | Publications | Publications IDs |
|---|
No data available
Source: {{source.label}},
No data available
Source: {{source.label}},
| Disease | Gene-disease evidence | |||||||
|---|---|---|---|---|---|---|---|---|
| Overview | Activity | Mutations | Evidence source | Publications | Publications IDs |
No data available
Source: {{source.label}},
| Disease | Gene-disease evidence | Experiment overview and data | Publications | Publications Ids | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Comparison | Activity | Tissue/cell | Evidence source | Log2 fold change | P-value | Percentile rank |
No data available
Source: {{source.label}},
Shown are the {{search.tables.literature.total}} articles where target and disease are found in the same sentence.
No data available
Source: {{source.label}}
| Disease | Phenotype - Phenotype Evidence | Model - Disease Evidence | ||||
|---|---|---|---|---|---|---|
| Human | Mouse | Mouse model | Source | Score |
No data available


--- layout: default title: Reference ---
Resume - updated 28 April 2023.
Github
Email
This website is under the MIT license. You are free to use my code on Github and reference my work.


Choose a plot from the menu at the top to get started.
Data Fetching
Update Every:
3 s
5 s
10 s
never
Update Now
Cut Bounds
Shift-click several points on the plot to mark a region of interest.
Save Cut Region to ODB
Building your histogram...


--- title: Think Stats -- Probability and Statistics for Programmers layout: post ---
This HTML version of is provided for convenience, but it is not the best format for the book. In particular, some of the symbols are not rendered correctly.
You might prefer to read the PDF version, or you can buy a hardcopy here.
Awesome free online resource for learning prob and stat.


Model Training and Evaluation¶
Load Preprocessed data¶
# retrieve the preprocessed data from previous notebook
%store -r x_train
%store -r x_test
%store -r y_train
%store -r y_test
%store -r yy
%store -r le
Initial model architecture - MLP¶
We will start with constructing a Multilayer Perceptron (MLP) Neural Network using Keras and a Tensorflow backend.
Starting with a sequential
model so we can build the model layer by layer.
We will begin with a simple model architecture, consisting of three layers, an input layer, a hidden layer and an output layer. All three layers will be of the dense
layer type which is a standard layer type that is used in many cases for neural networks.
The first layer will receive the input shape. As each sample contains 40 MFCCs (or columns) we have a shape of (1x40) this means we will start with an input shape of 40.
The first two layers will have 256 nodes. The activation function we will be using for our first 2 layers is the ReLU
, or Rectified Linear Activation
. This activation function has been proven to work well in neural networks.
We will also apply a Dropout
value of 50% on our first two layers. This will randomly exclude nodes from each update cycle which in turn results in a network that is capable of better generalisation and is less likely to overfit the training data.
Our output layer will have 10 nodes (num_labels) which matches the number of possible classifications. The activation is for our output layer is softmax
. Softmax makes the output sum up to 1 so the output can be interpreted as probabilities. The model will then make its prediction based on which option has the highest probability.
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.optimizers import Adam
from keras.utils import np_utils
from sklearn import metrics
num_labels = yy.shape[1]
filter_size = 2
# Construct model
model = Sequential()
model.add(Dense(256, input_shape=(40,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_labels))
model.add(Activation('softmax'))
Using TensorFlow backend.
Compiling the model¶
For compiling our model, we will use the following three parameters:
Loss function - we will use
categorical_crossentropy
. This is the most common choice for classification. A lower score indicates that the model is performing better.Metrics - we will use the
accuracy
metric which will allow us to view the accuracy score on the validation data when we train the model.Optimizer - here we will use
adam
which is a generally good optimizer for many use cases.
# Compile the model
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')
# Display model architecture summary
model.summary()
# Calculate pre-training accuracy
score = model.evaluate(x_test, y_test, verbose=0)
accuracy = 100*score[1]
print("Pre-training accuracy: %.4f%%" % accuracy)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 256) 10496
_________________________________________________________________
activation_1 (Activation) (None, 256) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 256) 0
_________________________________________________________________
dense_2 (Dense) (None, 256) 65792
_________________________________________________________________
activation_2 (Activation) (None, 256) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 256) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 2570
_________________________________________________________________
activation_3 (Activation) (None, 10) 0
=================================================================
Total params: 78,858
Trainable params: 78,858
Non-trainable params: 0
_________________________________________________________________
Pre-training accuracy: 11.5627%
Training¶
Here we will train the model.
We will start with 100 epochs which is the number of times the model will cycle through the data. The model will improve on each cycle until it reaches a certain point.
We will also start with a low batch size, as having a large batch size can reduce the generalisation ability of the model.
from keras.callbacks import ModelCheckpoint
from datetime import datetime
num_epochs = 100
num_batch_size = 32
checkpointer = ModelCheckpoint(filepath='saved_models/weights.best.basic_mlp.hdf5',
verbose=1, save_best_only=True)
start = datetime.now()
model.fit(x_train, y_train, batch_size=num_batch_size, epochs=num_epochs, validation_data=(x_test, y_test), callbacks=[checkpointer], verbose=1)
duration = datetime.now() - start
print("Training completed in time: ", duration)
Train on 6985 samples, validate on 1747 samples
Epoch 1/100
6985/6985 [==============================] - 4s 583us/step - loss: 11.1227 - acc: 0.2165 - val_loss: 6.8835 - val_acc: 0.3526
Epoch 00001: val_loss improved from inf to 6.88353, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 2/100
6985/6985 [==============================] - 2s 352us/step - loss: 4.8051 - acc: 0.3087 - val_loss: 1.8028 - val_acc: 0.4139
Epoch 00002: val_loss improved from 6.88353 to 1.80277, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 3/100
6985/6985 [==============================] - 2s 336us/step - loss: 1.9797 - acc: 0.3576 - val_loss: 1.6131 - val_acc: 0.5243
Epoch 00003: val_loss improved from 1.80277 to 1.61305, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 4/100
6985/6985 [==============================] - 2s 335us/step - loss: 1.6974 - acc: 0.4283 - val_loss: 1.3788 - val_acc: 0.5736
Epoch 00004: val_loss improved from 1.61305 to 1.37876, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 5/100
6985/6985 [==============================] - 2s 339us/step - loss: 1.5283 - acc: 0.4769 - val_loss: 1.2597 - val_acc: 0.6033
Epoch 00005: val_loss improved from 1.37876 to 1.25972, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 6/100
6985/6985 [==============================] - 2s 340us/step - loss: 1.4293 - acc: 0.5215 - val_loss: 1.1548 - val_acc: 0.6485
Epoch 00006: val_loss improved from 1.25972 to 1.15475, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 7/100
6985/6985 [==============================] - 2s 350us/step - loss: 1.3435 - acc: 0.5509 - val_loss: 1.1064 - val_acc: 0.6611
Epoch 00007: val_loss improved from 1.15475 to 1.10643, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 8/100
6985/6985 [==============================] - 3s 362us/step - loss: 1.2510 - acc: 0.5781 - val_loss: 1.0391 - val_acc: 0.6823
Epoch 00008: val_loss improved from 1.10643 to 1.03908, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 9/100
6985/6985 [==============================] - 3s 374us/step - loss: 1.2365 - acc: 0.5778 - val_loss: 1.0108 - val_acc: 0.6754
Epoch 00009: val_loss improved from 1.03908 to 1.01082, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 10/100
6985/6985 [==============================] - 3s 361us/step - loss: 1.1524 - acc: 0.6030 - val_loss: 0.9651 - val_acc: 0.6886
Epoch 00010: val_loss improved from 1.01082 to 0.96510, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 11/100
6985/6985 [==============================] - 2s 354us/step - loss: 1.1274 - acc: 0.6156 - val_loss: 0.9360 - val_acc: 0.6903
Epoch 00011: val_loss improved from 0.96510 to 0.93600, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 12/100
6985/6985 [==============================] - 2s 344us/step - loss: 1.0735 - acc: 0.6265 - val_loss: 0.8927 - val_acc: 0.7281
Epoch 00012: val_loss improved from 0.93600 to 0.89269, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 13/100
6985/6985 [==============================] - 2s 350us/step - loss: 1.0516 - acc: 0.6389 - val_loss: 0.8353 - val_acc: 0.7230
Epoch 00013: val_loss improved from 0.89269 to 0.83531, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 14/100
6985/6985 [==============================] - 2s 353us/step - loss: 1.0339 - acc: 0.6465 - val_loss: 0.8109 - val_acc: 0.7321
Epoch 00014: val_loss improved from 0.83531 to 0.81090, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 15/100
6985/6985 [==============================] - 2s 355us/step - loss: 0.9959 - acc: 0.6547 - val_loss: 0.8110 - val_acc: 0.7476
Epoch 00015: val_loss did not improve from 0.81090
Epoch 16/100
6985/6985 [==============================] - 2s 345us/step - loss: 0.9613 - acc: 0.6687 - val_loss: 0.7552 - val_acc: 0.7590
Epoch 00016: val_loss improved from 0.81090 to 0.75516, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 17/100
6985/6985 [==============================] - 2s 349us/step - loss: 0.9541 - acc: 0.6797 - val_loss: 0.7335 - val_acc: 0.7676
Epoch 00017: val_loss improved from 0.75516 to 0.73350, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 18/100
6985/6985 [==============================] - 2s 354us/step - loss: 0.9186 - acc: 0.6902 - val_loss: 0.7308 - val_acc: 0.7607
Epoch 00018: val_loss improved from 0.73350 to 0.73077, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 19/100
6985/6985 [==============================] - 2s 353us/step - loss: 0.8931 - acc: 0.6959 - val_loss: 0.7040 - val_acc: 0.7813
Epoch 00019: val_loss improved from 0.73077 to 0.70403, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 20/100
6985/6985 [==============================] - 3s 361us/step - loss: 0.8665 - acc: 0.7078 - val_loss: 0.6615 - val_acc: 0.8002
Epoch 00020: val_loss improved from 0.70403 to 0.66146, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 21/100
6985/6985 [==============================] - 3s 358us/step - loss: 0.8527 - acc: 0.7114 - val_loss: 0.6488 - val_acc: 0.8048
Epoch 00021: val_loss improved from 0.66146 to 0.64877, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 22/100
6985/6985 [==============================] - 2s 348us/step - loss: 0.8578 - acc: 0.7148 - val_loss: 0.6610 - val_acc: 0.7956
Epoch 00022: val_loss did not improve from 0.64877
Epoch 23/100
6985/6985 [==============================] - 2s 350us/step - loss: 0.8290 - acc: 0.7137 - val_loss: 0.6494 - val_acc: 0.8077
Epoch 00023: val_loss did not improve from 0.64877
Epoch 24/100
6985/6985 [==============================] - 3s 369us/step - loss: 0.8144 - acc: 0.7236 - val_loss: 0.6361 - val_acc: 0.8031
Epoch 00024: val_loss improved from 0.64877 to 0.63609, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 25/100
6985/6985 [==============================] - 3s 364us/step - loss: 0.8250 - acc: 0.7168 - val_loss: 0.6198 - val_acc: 0.8122
Epoch 00025: val_loss improved from 0.63609 to 0.61980, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 26/100
6985/6985 [==============================] - 3s 372us/step - loss: 0.8066 - acc: 0.7251 - val_loss: 0.6066 - val_acc: 0.8191
Epoch 00026: val_loss improved from 0.61980 to 0.60664, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 27/100
6985/6985 [==============================] - 2s 356us/step - loss: 0.7804 - acc: 0.7403 - val_loss: 0.5878 - val_acc: 0.8128
Epoch 00027: val_loss improved from 0.60664 to 0.58775, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 28/100
6985/6985 [==============================] - 3s 367us/step - loss: 0.7838 - acc: 0.7307 - val_loss: 0.5887 - val_acc: 0.8197
Epoch 00028: val_loss did not improve from 0.58775
Epoch 29/100
6985/6985 [==============================] - 3s 371us/step - loss: 0.7706 - acc: 0.7373 - val_loss: 0.5608 - val_acc: 0.8237
Epoch 00029: val_loss improved from 0.58775 to 0.56081, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 30/100
6985/6985 [==============================] - 2s 342us/step - loss: 0.7481 - acc: 0.7396 - val_loss: 0.5763 - val_acc: 0.8220
Epoch 00030: val_loss did not improve from 0.56081
Epoch 31/100
6985/6985 [==============================] - 2s 358us/step - loss: 0.7472 - acc: 0.7459 - val_loss: 0.5722 - val_acc: 0.8197
Epoch 00031: val_loss did not improve from 0.56081
Epoch 32/100
6985/6985 [==============================] - 3s 367us/step - loss: 0.7365 - acc: 0.7476 - val_loss: 0.5668 - val_acc: 0.8180
Epoch 00032: val_loss did not improve from 0.56081
Epoch 33/100
6985/6985 [==============================] - 3s 361us/step - loss: 0.7410 - acc: 0.7492 - val_loss: 0.5643 - val_acc: 0.8191
Epoch 00033: val_loss did not improve from 0.56081
Epoch 34/100
6985/6985 [==============================] - 2s 349us/step - loss: 0.7344 - acc: 0.7472 - val_loss: 0.5609 - val_acc: 0.8288
Epoch 00034: val_loss did not improve from 0.56081
Epoch 35/100
6985/6985 [==============================] - 3s 368us/step - loss: 0.7187 - acc: 0.7563 - val_loss: 0.5607 - val_acc: 0.8208
Epoch 00035: val_loss improved from 0.56081 to 0.56067, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 36/100
6985/6985 [==============================] - 2s 343us/step - loss: 0.7177 - acc: 0.7556 - val_loss: 0.5344 - val_acc: 0.8414
Epoch 00036: val_loss improved from 0.56067 to 0.53436, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 37/100
6985/6985 [==============================] - 2s 329us/step - loss: 0.6918 - acc: 0.7609 - val_loss: 0.5245 - val_acc: 0.8380
Epoch 00037: val_loss improved from 0.53436 to 0.52452, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 38/100
6985/6985 [==============================] - 2s 330us/step - loss: 0.7010 - acc: 0.7543 - val_loss: 0.5409 - val_acc: 0.8323
Epoch 00038: val_loss did not improve from 0.52452
Epoch 39/100
6985/6985 [==============================] - 2s 349us/step - loss: 0.6888 - acc: 0.7611 - val_loss: 0.5411 - val_acc: 0.8271
Epoch 00039: val_loss did not improve from 0.52452
Epoch 40/100
6985/6985 [==============================] - 2s 352us/step - loss: 0.6761 - acc: 0.7678 - val_loss: 0.5462 - val_acc: 0.8220
Epoch 00040: val_loss did not improve from 0.52452
Epoch 41/100
6985/6985 [==============================] - 2s 344us/step - loss: 0.6940 - acc: 0.7641 - val_loss: 0.5248 - val_acc: 0.8260
Epoch 00041: val_loss did not improve from 0.52452
Epoch 42/100
6985/6985 [==============================] - 2s 344us/step - loss: 0.7008 - acc: 0.7644 - val_loss: 0.5202 - val_acc: 0.8397
Epoch 00042: val_loss improved from 0.52452 to 0.52018, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 43/100
6985/6985 [==============================] - 2s 340us/step - loss: 0.6817 - acc: 0.7655 - val_loss: 0.5340 - val_acc: 0.8357
Epoch 00043: val_loss did not improve from 0.52018
Epoch 44/100
6985/6985 [==============================] - 2s 350us/step - loss: 0.6772 - acc: 0.7694 - val_loss: 0.5314 - val_acc: 0.8397
Epoch 00044: val_loss did not improve from 0.52018
Epoch 45/100
6985/6985 [==============================] - 2s 339us/step - loss: 0.6768 - acc: 0.7712 - val_loss: 0.5035 - val_acc: 0.8523
Epoch 00045: val_loss improved from 0.52018 to 0.50350, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 46/100
6985/6985 [==============================] - 2s 336us/step - loss: 0.6785 - acc: 0.7682 - val_loss: 0.5208 - val_acc: 0.8340
Epoch 00046: val_loss did not improve from 0.50350
Epoch 47/100
6985/6985 [==============================] - 2s 330us/step - loss: 0.6712 - acc: 0.7754 - val_loss: 0.4978 - val_acc: 0.8477
Epoch 00047: val_loss improved from 0.50350 to 0.49784, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 48/100
6985/6985 [==============================] - 2s 332us/step - loss: 0.6736 - acc: 0.7701 - val_loss: 0.4905 - val_acc: 0.8426
Epoch 00048: val_loss improved from 0.49784 to 0.49050, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 49/100
6985/6985 [==============================] - 2s 335us/step - loss: 0.6382 - acc: 0.7787 - val_loss: 0.4851 - val_acc: 0.8477
Epoch 00049: val_loss improved from 0.49050 to 0.48515, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 50/100
6985/6985 [==============================] - 2s 331us/step - loss: 0.6423 - acc: 0.7853 - val_loss: 0.5047 - val_acc: 0.8294
Epoch 00050: val_loss did not improve from 0.48515
Epoch 51/100
6985/6985 [==============================] - 2s 339us/step - loss: 0.6426 - acc: 0.7847 - val_loss: 0.4914 - val_acc: 0.8454
Epoch 00051: val_loss did not improve from 0.48515
Epoch 52/100
6985/6985 [==============================] - 2s 338us/step - loss: 0.6233 - acc: 0.7847 - val_loss: 0.4822 - val_acc: 0.8546
Epoch 00052: val_loss improved from 0.48515 to 0.48218, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 53/100
6985/6985 [==============================] - 2s 345us/step - loss: 0.6257 - acc: 0.7851 - val_loss: 0.4939 - val_acc: 0.8443
Epoch 00053: val_loss did not improve from 0.48218
Epoch 54/100
6985/6985 [==============================] - 2s 346us/step - loss: 0.6243 - acc: 0.7884 - val_loss: 0.4835 - val_acc: 0.8506
Epoch 00054: val_loss did not improve from 0.48218
Epoch 55/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.6167 - acc: 0.7871 - val_loss: 0.4682 - val_acc: 0.8552
Epoch 00055: val_loss improved from 0.48218 to 0.46823, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 56/100
6985/6985 [==============================] - 2s 350us/step - loss: 0.6204 - acc: 0.7875 - val_loss: 0.4837 - val_acc: 0.8558
Epoch 00056: val_loss did not improve from 0.46823
Epoch 57/100
6985/6985 [==============================] - 2s 353us/step - loss: 0.6257 - acc: 0.7790 - val_loss: 0.4628 - val_acc: 0.8592
Epoch 00057: val_loss improved from 0.46823 to 0.46283, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 58/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.6344 - acc: 0.7797 - val_loss: 0.4570 - val_acc: 0.8626
Epoch 00058: val_loss improved from 0.46283 to 0.45701, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 59/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.6024 - acc: 0.7931 - val_loss: 0.4806 - val_acc: 0.8489
Epoch 00059: val_loss did not improve from 0.45701
Epoch 60/100
6985/6985 [==============================] - 2s 352us/step - loss: 0.6021 - acc: 0.7970 - val_loss: 0.4691 - val_acc: 0.8701
Epoch 00060: val_loss did not improve from 0.45701
Epoch 61/100
6985/6985 [==============================] - 2s 350us/step - loss: 0.5985 - acc: 0.7936 - val_loss: 0.4859 - val_acc: 0.8506
Epoch 00061: val_loss did not improve from 0.45701
Epoch 62/100
6985/6985 [==============================] - 2s 347us/step - loss: 0.5855 - acc: 0.7974 - val_loss: 0.4725 - val_acc: 0.8580
Epoch 00062: val_loss did not improve from 0.45701
Epoch 63/100
6985/6985 [==============================] - 3s 365us/step - loss: 0.6021 - acc: 0.7885 - val_loss: 0.4705 - val_acc: 0.8512
Epoch 00063: val_loss did not improve from 0.45701
Epoch 64/100
6985/6985 [==============================] - 2s 352us/step - loss: 0.5974 - acc: 0.7960 - val_loss: 0.4710 - val_acc: 0.8535
Epoch 00064: val_loss did not improve from 0.45701
Epoch 65/100
6985/6985 [==============================] - 2s 350us/step - loss: 0.6117 - acc: 0.7914 - val_loss: 0.4814 - val_acc: 0.8558
Epoch 00065: val_loss did not improve from 0.45701
Epoch 66/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.5910 - acc: 0.8013 - val_loss: 0.4649 - val_acc: 0.8592
Epoch 00066: val_loss did not improve from 0.45701
Epoch 67/100
6985/6985 [==============================] - 3s 367us/step - loss: 0.6112 - acc: 0.7976 - val_loss: 0.4594 - val_acc: 0.8598
Epoch 00067: val_loss did not improve from 0.45701
Epoch 68/100
6985/6985 [==============================] - 3s 371us/step - loss: 0.5852 - acc: 0.8016 - val_loss: 0.4869 - val_acc: 0.8443
Epoch 00068: val_loss did not improve from 0.45701
Epoch 69/100
6985/6985 [==============================] - 3s 370us/step - loss: 0.5918 - acc: 0.7999 - val_loss: 0.4709 - val_acc: 0.8529
Epoch 00069: val_loss did not improve from 0.45701
Epoch 70/100
6985/6985 [==============================] - 2s 354us/step - loss: 0.5636 - acc: 0.8133 - val_loss: 0.4491 - val_acc: 0.8649
Epoch 00070: val_loss improved from 0.45701 to 0.44906, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 71/100
6985/6985 [==============================] - 2s 348us/step - loss: 0.6037 - acc: 0.8010 - val_loss: 0.4600 - val_acc: 0.8638
Epoch 00071: val_loss did not improve from 0.44906
Epoch 72/100
6985/6985 [==============================] - 3s 367us/step - loss: 0.5755 - acc: 0.8040 - val_loss: 0.4379 - val_acc: 0.8695
Epoch 00072: val_loss improved from 0.44906 to 0.43790, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 73/100
6985/6985 [==============================] - 3s 364us/step - loss: 0.5781 - acc: 0.8020 - val_loss: 0.4415 - val_acc: 0.8575
Epoch 00073: val_loss did not improve from 0.43790
Epoch 74/100
6985/6985 [==============================] - 3s 364us/step - loss: 0.5757 - acc: 0.8064 - val_loss: 0.4409 - val_acc: 0.8649
Epoch 00074: val_loss did not improve from 0.43790
Epoch 75/100
6985/6985 [==============================] - 2s 353us/step - loss: 0.5687 - acc: 0.8145 - val_loss: 0.4505 - val_acc: 0.8741
Epoch 00075: val_loss did not improve from 0.43790
Epoch 76/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.5500 - acc: 0.8143 - val_loss: 0.4285 - val_acc: 0.8672
Epoch 00076: val_loss improved from 0.43790 to 0.42855, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 77/100
6985/6985 [==============================] - 3s 418us/step - loss: 0.5870 - acc: 0.7994 - val_loss: 0.4398 - val_acc: 0.8712
Epoch 00077: val_loss did not improve from 0.42855
Epoch 78/100
6985/6985 [==============================] - 3s 395us/step - loss: 0.5718 - acc: 0.8056 - val_loss: 0.4423 - val_acc: 0.8706
Epoch 00078: val_loss did not improve from 0.42855
Epoch 79/100
6985/6985 [==============================] - 3s 359us/step - loss: 0.5768 - acc: 0.8057 - val_loss: 0.4479 - val_acc: 0.8706
Epoch 00079: val_loss did not improve from 0.42855
Epoch 80/100
6985/6985 [==============================] - 2s 338us/step - loss: 0.5719 - acc: 0.8070 - val_loss: 0.4340 - val_acc: 0.8701
Epoch 00080: val_loss did not improve from 0.42855
Epoch 81/100
6985/6985 [==============================] - 2s 347us/step - loss: 0.5600 - acc: 0.8122 - val_loss: 0.4380 - val_acc: 0.8632
Epoch 00081: val_loss did not improve from 0.42855
Epoch 82/100
6985/6985 [==============================] - 3s 366us/step - loss: 0.5541 - acc: 0.8149 - val_loss: 0.4205 - val_acc: 0.8729
Epoch 00082: val_loss improved from 0.42855 to 0.42049, saving model to saved_models/weights.best.basic_mlp.hdf5
Epoch 83/100
6985/6985 [==============================] - 3s 386us/step - loss: 0.5528 - acc: 0.8107 - val_loss: 0.4254 - val_acc: 0.8792
Epoch 00083: val_loss did not improve from 0.42049
Epoch 84/100
6985/6985 [==============================] - 3s 480us/step - loss: 0.5465 - acc: 0.8135 - val_loss: 0.4517 - val_acc: 0.8632
Epoch 00084: val_loss did not improve from 0.42049
Epoch 85/100
6985/6985 [==============================] - 3s 443us/step - loss: 0.5402 - acc: 0.8147 - val_loss: 0.4400 - val_acc: 0.8724
Epoch 00085: val_loss did not improve from 0.42049
Epoch 86/100
6985/6985 [==============================] - 3s 478us/step - loss: 0.5569 - acc: 0.8097 - val_loss: 0.4488 - val_acc: 0.8626
Epoch 00086: val_loss did not improve from 0.42049
Epoch 87/100
6985/6985 [==============================] - 3s 413us/step - loss: 0.5529 - acc: 0.8127 - val_loss: 0.4429 - val_acc: 0.8620
Epoch 00087: val_loss did not improve from 0.42049
Epoch 88/100
6985/6985 [==============================] - 3s 396us/step - loss: 0.5717 - acc: 0.8125 - val_loss: 0.4551 - val_acc: 0.8649
Epoch 00088: val_loss did not improve from 0.42049
Epoch 89/100
6985/6985 [==============================] - 3s 383us/step - loss: 0.5520 - acc: 0.8188 - val_loss: 0.4413 - val_acc: 0.8769
Epoch 00089: val_loss did not improve from 0.42049
Epoch 90/100
6985/6985 [==============================] - 3s 365us/step - loss: 0.5566 - acc: 0.8106 - val_loss: 0.4512 - val_acc: 0.8626
Epoch 00090: val_loss did not improve from 0.42049
Epoch 91/100
6985/6985 [==============================] - 3s 361us/step - loss: 0.5526 - acc: 0.8125 - val_loss: 0.4453 - val_acc: 0.8638
Epoch 00091: val_loss did not improve from 0.42049
Epoch 92/100
6985/6985 [==============================] - 3s 384us/step - loss: 0.5487 - acc: 0.8110 - val_loss: 0.4290 - val_acc: 0.8735
Epoch 00092: val_loss did not improve from 0.42049
Epoch 93/100
6985/6985 [==============================] - 3s 365us/step - loss: 0.5279 - acc: 0.8245 - val_loss: 0.4223 - val_acc: 0.8724
Epoch 00093: val_loss did not improve from 0.42049
Epoch 94/100
6985/6985 [==============================] - 3s 365us/step - loss: 0.5412 - acc: 0.8219 - val_loss: 0.4317 - val_acc: 0.8804
Epoch 00094: val_loss did not improve from 0.42049
Epoch 95/100
6985/6985 [==============================] - 3s 376us/step - loss: 0.5393 - acc: 0.8210 - val_loss: 0.4422 - val_acc: 0.8643
Epoch 00095: val_loss did not improve from 0.42049
Epoch 96/100
6985/6985 [==============================] - 3s 376us/step - loss: 0.5327 - acc: 0.8203 - val_loss: 0.4266 - val_acc: 0.8689
Epoch 00096: val_loss did not improve from 0.42049
Epoch 97/100
6985/6985 [==============================] - 2s 334us/step - loss: 0.5525 - acc: 0.8125 - val_loss: 0.4370 - val_acc: 0.8626
Epoch 00097: val_loss did not improve from 0.42049
Epoch 98/100
6985/6985 [==============================] - 2s 329us/step - loss: 0.5246 - acc: 0.8241 - val_loss: 0.4338 - val_acc: 0.8620
Epoch 00098: val_loss did not improve from 0.42049
Epoch 99/100
6985/6985 [==============================] - 2s 347us/step - loss: 0.5346 - acc: 0.8169 - val_loss: 0.4457 - val_acc: 0.8586
Epoch 00099: val_loss did not improve from 0.42049
Epoch 100/100
6985/6985 [==============================] - 2s 351us/step - loss: 0.5413 - acc: 0.8153 - val_loss: 0.4306 - val_acc: 0.8764
Epoch 00100: val_loss did not improve from 0.42049
Training completed in time: 0:04:15.582298
Test the model¶
Here we will review the accuracy of the model on both the training and test data sets.
# Evaluating the model on the training and testing set
score = model.evaluate(x_train, y_train, verbose=0)
print("Training Accuracy: ", score[1])
score = model.evaluate(x_test, y_test, verbose=0)
print("Testing Accuracy: ", score[1])
Training Accuracy: 0.9252684323550465
Testing Accuracy: 0.8763594734511787
The initial Training and Testing accuracy scores are quite high. As there is not a great difference between the Training and Test scores (~5%) this suggests that the model has not suffered from overfitting.
Predictions¶
Here we will build a method which will allow us to test the models predictions on a specified audio .wav file.
import librosa
import numpy as np
def extract_feature(file_name):
try:
audio_data, sample_rate = librosa.load(file_name, res_type='kaiser_fast')
mfccs = librosa.feature.mfcc(y=audio_data, sr=sample_rate, n_mfcc=40)
mfccsscaled = np.mean(mfccs.T,axis=0)
except Exception as e:
print("Error encountered while parsing file: ", file)
return None, None
return np.array([mfccsscaled])
def print_prediction(file_name):
prediction_feature = extract_feature(file_name)
predicted_vector = model.predict_classes(prediction_feature)
predicted_class = le.inverse_transform(predicted_vector)
print("The predicted class is:", predicted_class[0], '\n')
predicted_proba_vector = model.predict_proba(prediction_feature)
predicted_proba = predicted_proba_vector[0]
for i in range(len(predicted_proba)):
category = le.inverse_transform(np.array([i]))
print(category[0], "\t\t : ", format(predicted_proba[i], '.32f') )
Validation¶
Test with sample data¶
Initial sainity check to verify the predictions using a subsection of the sample audio files we explored in the first notebook. We expect the bulk of these to be classified correctly.
# Class: Air Conditioner
filename = '../UrbanSound Dataset sample/audio/100852-0-0-0.wav'
print_prediction(filename)
The predicted class is: air_conditioner
air_conditioner : 0.99989426136016845703125000000000
car_horn : 0.00000715439318810240365564823151
children_playing : 0.00001791530303307808935642242432
dog_bark : 0.00000025655413082859013229608536
drilling : 0.00000283992426375334616750478745
engine_idling : 0.00005887898078071884810924530029
gun_shot : 0.00000001620782441591472888831049
jackhammer : 0.00000035662964137372910045087337
siren : 0.00000004348472515403045690618455
street_music : 0.00001830780820455402135848999023
# Class: Drilling
filename = '../UrbanSound Dataset sample/audio/103199-4-0-0.wav'
print_prediction(filename)
The predicted class is: drilling
air_conditioner : 0.00000000003295356001964400149973
car_horn : 0.00000000308959258177310402970761
children_playing : 0.00002208830665040295571088790894
dog_bark : 0.00000067401481373963179066777229
drilling : 0.99972504377365112304687500000000
engine_idling : 0.00000000002312424904338250541969
gun_shot : 0.00000014346949228638550266623497
jackhammer : 0.00000000029780389265710027757450
siren : 0.00000000156893398273183493074612
street_music : 0.00025209947489202022552490234375
# Class: Street music
filename = '../UrbanSound Dataset sample/audio/101848-9-0-0.wav'
print_prediction(filename)
The predicted class is: street_music
air_conditioner : 0.09999072551727294921875000000000
car_horn : 0.00305506144650280475616455078125
children_playing : 0.09950152784585952758789062500000
dog_bark : 0.02582867257297039031982421875000
drilling : 0.00509325042366981506347656250000
engine_idling : 0.00916280318051576614379882812500
gun_shot : 0.00549275847151875495910644531250
jackhammer : 0.03270008042454719543457031250000
siren : 0.00361734302714467048645019531250
street_music : 0.71555775403976440429687500000000
# Class: Car Horn
filename = '../UrbanSound Dataset sample/audio/100648-1-0-0.wav'
print_prediction(filename)
The predicted class is: car_horn
air_conditioner : 0.00188611494377255439758300781250
car_horn : 0.68632853031158447265625000000000
children_playing : 0.01224335655570030212402343750000
dog_bark : 0.16461659967899322509765625000000
drilling : 0.05645351111888885498046875000000
engine_idling : 0.00212736334651708602905273437500
gun_shot : 0.00211420282721519470214843750000
jackhammer : 0.00372551172040402889251708984375
siren : 0.00587591761723160743713378906250
street_music : 0.06462877988815307617187500000000
Observations¶
From this brief sanity check the model seems to predict well. One errror was observed whereby a car horn was incorrectly classifed as a dog bark.
We can see from the per class confidence that this was quite a low score (43%). This allows follows our early observation that a dog bark and car horn are similar in spectral shape.
Other audio¶
Here we will use a sample of various copyright free sounds that we not part of either our test or training data to further validate our model.
filename = '../Evaluation audio/dog_bark_1.wav'
print_prediction(filename)
The predicted class is: dog_bark
air_conditioner : 0.00038618501275777816772460937500
car_horn : 0.00915508810430765151977539062500
children_playing : 0.06478454917669296264648437500000
dog_bark : 0.71007812023162841796875000000000
drilling : 0.02283692173659801483154296875000
engine_idling : 0.00240809586830437183380126953125
gun_shot : 0.10433794558048248291015625000000
jackhammer : 0.00001514166433480568230152130127
siren : 0.01288078445941209793090820312500
street_music : 0.07311715185642242431640625000000
filename = '../Evaluation audio/drilling_1.wav'
print_prediction(filename)
The predicted class is: drilling
air_conditioner : 0.32110649347305297851562500000000
car_horn : 0.00000022923920539597020251676440
children_playing : 0.00001040843835653504356741905212
dog_bark : 0.00000026054382828988309483975172
drilling : 0.66649377346038818359375000000000
engine_idling : 0.00000000133662025891823077472509
gun_shot : 0.00000043437574959170888178050518
jackhammer : 0.01238841470330953598022460937500
siren : 0.00000000002891160748308418959596
street_music : 0.00000000528942090127770825347397
filename = '../Evaluation audio/gun_shot_1.wav'
print_prediction(filename)
# sample data weighted towards gun shot - peak in the dog barking sample is simmilar in shape to the gun shot sample
The predicted class is: dog_bark
air_conditioner : 0.02008811198174953460693359375000
car_horn : 0.00047429648111574351787567138672
children_playing : 0.00094942341092973947525024414062
dog_bark : 0.53654015064239501953125000000000
drilling : 0.00093174201902002096176147460938
engine_idling : 0.03123776055872440338134765625000
gun_shot : 0.00091215252177789807319641113281
jackhammer : 0.00002015420614043250679969787598
siren : 0.00055970775429159402847290039062
street_music : 0.40828645229339599609375000000000
filename = '../Evaluation audio/siren_1.wav'
print_prediction(filename)
The predicted class is: siren
air_conditioner : 0.00000732402349967742338776588440
car_horn : 0.00057092373026534914970397949219
children_playing : 0.00199068244546651840209960937500
dog_bark : 0.02090488374233245849609375000000
drilling : 0.00046552356798201799392700195312
engine_idling : 0.14164580404758453369140625000000
gun_shot : 0.00050196843221783638000488281250
jackhammer : 0.00276053301058709621429443359375
siren : 0.81527197360992431640625000000000
street_music : 0.01588040776550769805908203125000
Observations¶
The performance of our initial model is satisfactorry and has generalised well, seeming to predict well when tested against new audio data.


You should tell the world. If you ever need anything at all, email Nick directly, or use the support link in the bottom right.


Open Data Science 2018 Conference Highlights
Conference Date: 11/2/2018-11/3/2018
Key Conference Takeaways
- “Software 2.0”
- AI, and in particular deep learning methods, is very powerful. AI models can be viewed as another way to ‘write’ a program. Instead of using procedural code, you simply give the program the desired input/output combinations, and it learns the proper program matching the inputs and outputs.
- To reliably and effectively develop “Software 2.0”, there needs to be a change in how development is approached. The following is a high outline of what was proposed:
- Version Data Sets Used for Train/Test
- Version Models
- Use a ‘Test Suite’ to compare performance, and to continually check for proper behavior at edge cases
- “Meta Learning Optimization”
- AutoML using Bayseian Optimization was a common topic. New frameworks for distributed genetic algorithms for model architecture search were also presented. There were many talks on different ways to approach optimizing meta-parameters of models.
- Explain-ability, Confidence, and Bayesian Methods
- There were still many talks on Bayesian Statistics for explainable models with performance/prediction confidence bounds. Many python frameworks were talked about including ‘Pymc3’, ‘Sampyl’, ‘Pomegranate’, ‘Pyro Deep Bayesian Models by Uber’, and some others. We should keep an eye on these, as it finally seems there are some growing Bayesian statistical packages worth using (I just recently used pymc3 in one of our projects).
Specific Talks
- “An Introduction to Active Learning”
- Speaker: Jennifer Prendki, VP of ML at Figure Eight
- Active learning is the process of ‘Intelligently Selecting’ data to be labeled from a set of unlabeled data. It is a sub-set of Semi-supervised learning, which focuses on how to use unlabeled data to augment and improve the learning process given a limited set of labeled training data.
- Active learning focuses on ‘query’ mechanisms for selecting the ‘most confusing’ or ‘most challenging’ data from a data set to label.
- Active learning (and Semi-supervised learning) doesn’t give you more performance that supervised learning does if you had a sufficiently large labeled data set. Rather, it gives you higher performance given the same amount of labeled data, when labeled data isn’t totally sufficient for a task.
- Active learning and Semi-supervised learning causes a performance decrease in ~90% of papers published. This is attributed to the arbitrary selection of query strategies in these cases.
- “How Reliable are Machine Learning Benchmarks? A Reproducibility Study on CIFAR-10”
- Speaker: Ludwig Schmidt, PhD, Post-Doc at UC Berkeley
- Most computer vision models are evaluated against the same test set year after year. This introduces a potential for over-fitting. In this talk, the speaker described how the way ML models are generally evaluated has the potential to cause “Overfitting through Adaptivity”. The idea is that you must perform ‘Reliability testing for a large number of adaptively chosen hypothesis (models) to perform hypothesis corrections’. (Methods to combat this in statistics are Benjamini Hochberg procedure, Post-selection inference, Differential Privacy,…)
- He proposes that most machine learning methods must have the following to prevent overfitting through adaptivity:
- Register a well-specified experimental protocol and analysis.
- Collect data and evaluate according to pre-specified method.
- Each new iteration of model testing/benchmarking, use a new test set generated from the pre-specified method.
- When evaluating the CIFAR benchmark, model performance ranking relative to each-other remains the same. Thus, in this instance, there isn’t overfitting through adaptivity. This is potentially explained by the ‘Ladder Mechanism, which is a method that guarantees no overfitting that was introduced in a paper by Avrim Blum (2016).
- “Experiments on AutoML in the Enterprise”
- Speaker: Erez Sali, PhD, Co founder, CTO, Firefly.ai
- Focus on existing AutoAI packages for developing models.
- Most used packages are: Auto sklearn, SMAC, Spearmint, RoBO.
- Most methods are just intelligent search or Bayesian optimization approaches. There are still may limitations to this kind of AutoML (And it somewhat differs from AutoML in the context of network architecture search for deep models).
- “Quantifying Uncertainty: Bayesian Data Analysis in Python”
- Speaker: Mat Leonard, Product Lead, Udacity
- Main contention is that cross-validation validates nothing, pvalues are only useful if you can quantify your uncertainty in them (thus the pvalue distribution is more important than the value itself. Pvalue can be arbitrarily significant given its distribution. So, pvalues alone should not be trusted.)
- If you approach modeling (At least in the linear sense) models using priors, likelihoods, and posteriors, you can generate parameter and prediction ‘credible intervals’ which can tell you things like ‘95% of the time, the prediction will fall into the range [x1, x2]’, which regular statistical confidence intervals cannot.
- We should think about applying this approach for the models that we have that are logistic regression models (It’s fairly straight-forward to do).
- “Continuous Experiment Framework at Uber” (https://eng.uber.com/xp/)
- Speaker: Jermy Gu, Senior Data Scientist, Uber
- This talk focused on how Uber does “Continuous Testing” (A continuous, online, and adaptive version of A/B testing)
- The speaker talks about how A/B testing can be costly when running the experiment has an ‘opportunity cost’ because of the waste in a test configuration that doesn’t work. By framing testing as a multi-armed bandit problem, and using a policy like Thompson Sampling, an A/B test can be changed to something that dynamically updates the distribution of which customers get which test configurations, and minimizes opportunity costs.
- They have 4 use cases at Uber:
- Optimizing tests over the best email subject line to use. (Content optimization) * Email subject lines, in-app messaging, US campaigns, LATAM and EMEA Campaigns, Mobile/Web Design Optimization.
- Optimizing over the best models and parameters to use for a particular task. (Using contextual multi-armed bandits with Bayesian optimization) * Uber Eats Ranking * Recommendation System for Uber Trips
- Optimizing how uber performs spending. * Optimal bidding strategy * Optimal promo strategy
- Automating product feature rollouts. * Power and Risk based methods for deciding rollout percentage


Git
A simple way to keep things organised.
Git
So today I want to write about git and why you should probably learn it. Git like alot of the tools programmers make will
simplify your life alot, its a tool designed to fix a very specific problem which is version control.
When you begin writing code your programmers are very small, a few lines at first, not more than 100, than
you get better and build more complex and bigger programs, so your files also grow, at this point you maybe
have 2/3 files, you are using imports and classes and its amazing, you can make code from one file work with
code from a second file. Wow right? it was very wow for me.
but your programs keep getting bigger and now you have 10 - 20 files, with hundreds of lines of code each,
you can't keep up so you try and get some help from a friend, he works on one file you work on the other
at the end of the day you meet up, exchange the files, connect them again and boom it works. But than your
friend changes something in your file and you change something in his, and you both want to keep the changes
because they were so good, but you can't exchange the files directly because now there are 4 sets of different
files, you have changes in your file that you just added and want to keep and there are changes in the copy
of your file that your friend has, he added some changes to your file and you also want to keep those, so
you guys decide to oberserve both files and copy and paste the lines you want to keep and delete the ones
that are not needed, yeah this is going to be alot of work.
This is where git comes in, git is a platform that lets you and your friend work on the same code at the
same time and it will "magically" work out which line to replace and which to keep and when it gets stuck
it will ask you which to keep and which to delete in an easy and very simple, painless way.
Git lets large teams work together from all over the world, as of writting this I have only seen 2 of the
developers I work with on a daily basis the other 4/5 are total strangers to me, I have never met them, all
I know is thier usernames and profile pictures, tell me that is not amazing. We are in different time zones,
different continents but we can work together on the same file.
Enough history, How do I use it?
First you will need a way to communicate with git, git is a tool and you need an interface, think of it as git is the internet, you need a way to view the internet like a browser, two of my favourite git access portals are- Github Bitbucket


Dealer
Player Name
Delete
Up
Down
clear
keyboard_arrow_up
keyboard_arrow_down
Add Player
Start Game
Cards


RBA minutes: Board prepared to ease policy further if needed (AUD lower)
by Ross J Burland- RBA minutes bring an element of surprise and play into the bear's hands.
- RBA minutes more dovish than prior communication and what the market had anticipated.
The minutes from the RBA Board’s 5th November meeting have been released which shows that the RBA has an easing bias. AUD/USD is lower on the minutes, down -0.20% at the time of writing.
- Bored prepared to ease policy further if needed and case could be made for a rate cut at November meeting.
- Decided rates should be held steady "at this meeting".
- Board recognised "negative effects" of lower rates on savers and confidence.
- Rate cuts could have different impact on confidence than in the past.
- Saw case to wait and asses impact of "substantial" stimulus already delivered.
- Agreed extended period of low interest rates would be required to meet targets.
- AUD at lower end of range of recent times.
- Saw "moderate" Australian GDP growth for the September.
- Considerable uncertainty over the outlook for household consumption.
- Risks from home building sector tilted to downside, could delay recovery.
- Liaison showed firms expected steady wages growth, very few saw a pick up.
- Risk extended period of low wage growth could lower wage expectations, norms.
- Board agreed a lift in wages growth would be a "welcome development".
- Risks to global growth forecasts still tilted to downside.
There is some element of surprise there considering that this is more dovish than what the central bank's Statement on Monetary Policy portrayed which one of its messages went as follows: “The Board was mindful that rates were already very low and that each further cut brings closer the point at which other policy options come into play”.
FX implications:
We had already seen a very lengthy quarterly statement but markets that are already somewhat positioned with the potential of further rate cuts ahead are likely to be cheering such rhetoric as this, cementing the case for further rate cuts to follow – Prior to the minutes, "markets were pricing a 20% chance of easing at the Dec RBA meeting, and a terminal rate of 0.50% (RBA cash rate currently at 0.75%)," analysts at Westpac had noted and that is likely now going to be higher on this outcome.
Technically, AUD/USD has been capped by the vicinity of the 200-day moving average at the start of this month. AUD/USD is respecting the descending trend line resistance at this juncture. To the downside, the 0.6730s guard prospects of a test to the YTD lows in the 0.6660s before the 0.65 handle. On the upside, a break of the 200-DMA opens risk to the 0.7020s which meets the 23.6% Fibonacci retracement level of the 2018 highs to July 2019 lows.


Upload a local file to read Exif data.
Click the images to read Exif data. The first image tests reading single tags, while the other two simply show all available data.


This application contains layers generated from differing datasets and datum. This was utilized due to the nature and extent of the data. As a result you may see differences in contouring by as much as three feet.
Do not make any business decisions based on this data before validating the information with the original data provider.


Source of Homework_6.3
Popups
Welcome to My HomeWork_6.3
homework
Do you want to go to
the Lemon
?
or would you prefer the
the Lime
?
Click and Input a URL
Return to Homepage
Return to Homepage


Admit it, you read that headline and your brain unconsciously changed it to "not a thing," driven by a sense of hope. Sorry. The International Drone Racing Association (yes, there's an association, and yes, it's international) announced its broadcast partnership with none other than ESPN, who will actually broadca...
read more


popover
bootstrap
Opens a bootstrap popover element with the data from the tile and content tags.
<button popover> ... </button>


a == b == c
).
Such comparisons are confusing: a == b == c
means (a == b) == c
,
but a == b && a == c
could be intended.
Example:
boolean chainedEquality(boolean a, boolean b, boolean c) { return a == b == c; }
Parentheses can be used to make the comparison less confusing:
boolean chainedEquality(boolean a, boolean b, boolean c) { return (a == b) == c; }


Dublin named the most vegan-friendly city in the world
by F and W StaffVegans get to planning your visit to Dublin! Ireland's capital has just topped a luxury travel company's list for vegan-friendly restaurants.
It may come as a bit of a surprise but according to luxury travel company Hayes & Jarvis, the Irish capital tops a global list of vegan-friendly restaurants.
Hayes & Jarvis analyzed information on popular travel website TripAdvisor, looking at the 50 most-visited cities in the world. It ranked which cities have the highest proportion of a particular restaurant category and the highest proportion of 4.5- to five-star restaurants in the category.
Read more: How hard is it to eat vegan or vegetarian in Ireland?
Dublin came in with 21.2 percent of restaurants classified as vegan-friendly, with Phuket in Thailand in at number two and Amsterdam in Holland at number three.
When it came to the destinations with the best vegan fare, Shenzhen in China was found to have the best quality vegan food (91.2 percent of its vegan restaurants have been rated 4.5 stars or above), followed by Cancun, Mexico (85.2 percent) and Macau, China (82 percent).
Read more: The best places for vegetarian dining around Dublin
Originally published on Food & Wine Ireland.


- safetyPelletSquareTest() - Method in class nl.tudelft.jpacman.strategy.PacManhattanAITest
-
Test to get the nearest safe square where there is a pellet about
the initial player position.
- safetySquareTest() - Method in class nl.tudelft.jpacman.strategy.PacManhattanAITest
-
Test to know if the square is safe or not for the player.
- saveScore() - Method in class nl.tudelft.jpacman.level.IdentifiedPlayer
-
Saves the player's highest scores and checks.
- setAlive(boolean) - Method in class nl.tudelft.jpacman.level.Player
-
Sets whether this player is alive or not.
- setAnimating(boolean) - Method in class nl.tudelft.jpacman.sprite.AnimatedSprite
-
Starts or stops the animation of this sprite.
- setDirection(Direction) - Method in class nl.tudelft.jpacman.board.Unit
-
Sets this unit to face the new direction.
- setFinished() - Method in class nl.tudelft.jpacman.level.Level
-
Simple setter for the 'finished' field that allows a level.
- setGhostDstThreshold(int) - Static method in class nl.tudelft.jpacman.strategy.PacManhattanAI
-
Set the ghostDstThreshold.
- setGoal(Square) - Method in class nl.tudelft.jpacman.strategy.AStarPath
-
Determines the goal square.
- setHam() - Static method in class nl.tudelft.jpacman.game.HallOfFame
-
Determines if the Hall of Fame is a ham.
- setInProgress(boolean) - Method in class nl.tudelft.jpacman.level.Level
-
Setter for the inProgress field.
- setIsNotATest(boolean) - Static method in class nl.tudelft.jpacman.game.HallOfFame
-
Sets whether the application is running or being tested.
- setIsNotATest() - Static method in class nl.tudelft.jpacman.level.IdentifiedPlayer
-
Sets whether the application is running or being tested.
- setLevel(int) - Method in class nl.tudelft.jpacman.game.Game
-
Sets the level to the one that has the given id (calls #Game.setLevel).
- setLevel(AILevel) - Method in class nl.tudelft.jpacman.game.Game
-
Forces subclasses to provide a method to switch to the given Level.
- setLevel(AILevel) - Method in class nl.tudelft.jpacman.game.SinglePlayerGame
-
Sets the current level to the given one.
- setLives(int) - Method in class nl.tudelft.jpacman.level.Player
-
Simple setter for the lives field.
- setPlayerName(String) - Method in class nl.tudelft.jpacman.level.IdentifiedPlayer
-
Sets the player's name.
- setProfilePath(String) - Method in class nl.tudelft.jpacman.level.IdentifiedPlayer
-
Sets the path to the file storing the player's stats.
- setScore(int) - Method in class nl.tudelft.jpacman.level.Player
-
Simple setter for the score field.
- setScoreFormatter(PlayerInfosPanel.ScoreFormatter) - Method in class nl.tudelft.jpacman.ui.PlayerInfosPanel
-
Let the player infos panel use a dedicated score formatter.
- setStrategy(PacmanStrategy) - Method in class nl.tudelft.jpacman.game.Game
-
Set the strategy.
- setStrategy(PacmanStrategy) - Method in class nl.tudelft.jpacman.level.AILevel
-
Set the strategy.
- setUp() - Method in class nl.tudelft.jpacman.board.BoardFactoryTest
-
Resets the factory under test.
- setUp() - Method in class nl.tudelft.jpacman.board.BoardTest
-
Setup a board that can be used for testing.
- setUp() - Method in class nl.tudelft.jpacman.board.OccupantTest
-
Resets the unit under test.
- setUp() - Method in class nl.tudelft.jpacman.board.SquareTest
-
Resets the square under test.
- setUp() - Method in class nl.tudelft.jpacman.game.SinglePlayerGameTest
-
Sets up the Game and its components.
- setUp() - Method in class nl.tudelft.jpacman.level.IdentifiedPlayerTest
-
Resets the test profile and load resources for this test suite.
- setUp() - Method in class nl.tudelft.jpacman.level.LevelTest
-
Sets up the level with the default board, a single NPC and a starting
square.
- setUp() - Method in class nl.tudelft.jpacman.npc.ghost.NavigationTest
-
Set up the map parser.
- setUp() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
The common fixture of this test class is
a 64 by 64 pixel white sprite.
- setUpPacman() - Method in class nl.tudelft.jpacman.LauncherSmokeTest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.AStarPathTest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.ChosenStrategyTest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.ContinuousMovementTest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.HumanControllerStrategyTest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.PacManhattanAITest
-
Launch the user interface.
- setUpPacman() - Method in class nl.tudelft.jpacman.strategy.SquareCoordinateTest
-
Launch the user interface.
- setX(int) - Method in class nl.tudelft.jpacman.board.Square
-
Set the x-coordinate.
- setY(int) - Method in class nl.tudelft.jpacman.board.Square
-
Set the y-coordinate.
- shortestPath(Square, Square, Unit) - Static method in class nl.tudelft.jpacman.npc.ghost.Navigation
-
Calculates the shortest path.
- SinglePlayerGame - Class in nl.tudelft.jpacman.game
-
A game with one player and a single level.
- SinglePlayerGame(IdentifiedPlayer) - Constructor for class nl.tudelft.jpacman.game.SinglePlayerGame
-
Create a new single player game for the provided level and player.
- SinglePlayerGameTest - Class in nl.tudelft.jpacman.game
-
Tests various aspects of SinglePlayerGame.
- SinglePlayerGameTest() - Constructor for class nl.tudelft.jpacman.game.SinglePlayerGameTest
-
- smokeTest() - Method in class nl.tudelft.jpacman.LauncherSmokeTest
-
Launch the game, and imitate what would happen in a typical game.
- split(int, int, int, int) - Method in class nl.tudelft.jpacman.sprite.AnimatedSprite
-
- split(int, int, int, int) - Method in class nl.tudelft.jpacman.sprite.EmptySprite
-
- split(int, int, int, int) - Method in class nl.tudelft.jpacman.sprite.ImageSprite
-
- split(int, int, int, int) - Method in interface nl.tudelft.jpacman.sprite.Sprite
-
Returns a portion of this sprite as a new Sprite.
- splitHeight() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
Verifies that an split sprite is correctly cut from its base image.
- splitOutOfBounds() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
Verifies that a split that isn't within the actual sprite returns an empty sprite.
- splitWidth() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
Verifies that an split sprite is correctly cut from its base image.
- Sprite - Interface in nl.tudelft.jpacman.sprite
-
Visual representation of some object.
- spriteHeight() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
Verifies the height of a static sprite.
- SpriteStore - Class in nl.tudelft.jpacman.sprite
-
- SpriteStore() - Constructor for class nl.tudelft.jpacman.sprite.SpriteStore
-
Create a new sprite store.
- SpriteTest - Class in nl.tudelft.jpacman.sprite
-
Verifies the loading of sprites.
- SpriteTest() - Constructor for class nl.tudelft.jpacman.sprite.SpriteTest
-
- spriteWidth() - Method in class nl.tudelft.jpacman.sprite.SpriteTest
-
Verifies the width of a static sprite.
- Square - Class in nl.tudelft.jpacman.board
-
A square on a
Board
, which can (or cannot, depending on the type) be
occupied by units.
- Square() - Constructor for class nl.tudelft.jpacman.board.Square
-
Creates a new, empty square.
- squareAt(int, int) - Method in class nl.tudelft.jpacman.board.Board
-
Returns the square at the given x,y
position.
- SquareCoordinateTest - Class in nl.tudelft.jpacman.strategy
-
Class to test coordinates of a square in the board.
- SquareCoordinateTest() - Constructor for class nl.tudelft.jpacman.strategy.SquareCoordinateTest
-
- squareCoordinateTest1() - Method in class nl.tudelft.jpacman.strategy.SquareCoordinateTest
-
Launch the game, and imitate what would happen in a typical game.
- SquareTest - Class in nl.tudelft.jpacman.board
-
Test suite to confirm the public API of
Square
works as desired.
- SquareTest() - Constructor for class nl.tudelft.jpacman.board.SquareTest
-
- start() - Method in class nl.tudelft.jpacman.game.Game
-
Starts or resumes the game.
- start() - Method in class nl.tudelft.jpacman.level.AILevel
-
Starts or resumes the level.
- start() - Method in class nl.tudelft.jpacman.level.LevelTest
-
Validates the state of the level when it is started.
- start() - Method in class nl.tudelft.jpacman.ui.PacManUI
-
Starts the "engine", the thread that redraws the interface at set
intervals.
- STARTING_LIVES - Static variable in class nl.tudelft.jpacman.game.SinglePlayerGame
-
- startStop() - Method in class nl.tudelft.jpacman.level.LevelTest
-
Validates the state of the level when it is started then stopped.
- stop() - Method in class nl.tudelft.jpacman.game.Game
-
Pauses the game.
- stop() - Method in class nl.tudelft.jpacman.level.AILevel
-
Stops or pauses this level, no longer allowing any movement on the board
and stopping all NPCs.
- stop() - Method in class nl.tudelft.jpacman.level.LevelTest
-
Validates the state of the level when it is stopped without starting.
- strategyTest() - Method in class nl.tudelft.jpacman.strategy.HumanControllerStrategyTest
-
Attribution of keys for the player to move the Pacman in the game.


{% extends 'base.html' %} {% block content %} Thank you for your email confirmation. As soon as your account is accepted by an authorized member you will be able to login. {% endblock %}


AFN: Shehu-Gusau vows to unravel corrupt practices
by Temisan AmoyeIbrahim Shehu-Gusau, embattled President, Athletics Federation of Nigeria, AFN has said the federation will work diligently to unravel all corrupt practices.
Shehu-Gusau said this on Sunday in a news conference to address the situation of things happening in the federation.
He said the measure was in keeping with President Muhammadu Buhari’s commitment to accountability and transparency.
ALSO READ: Klopp ‘never doubted’ Keita as Liverpool boss predicts big impact from midfield star
He said: “On the inauguration of our Board in July 2017, I was confronted with an allegation in respect of $150,000 paid to the AFN.
“I was accused of mismanaging the funds and in keeping with President Muhammadu Buhari’s commitment to accountability and transparency, I submitted myself to the relevant agencies for investigation.
“The individual reports exonerated me from any culpability but raised questions which the agencies are diligently pursuing.
“My action in submitting myself to be investigated laid the foundation for the misunderstandings being experienced in the AFN today.
ALSO READ: ‘I wasn’t happy at Arsenal’ ― Koscielny reveals his reasons for leaving the Gunners
“It is common knowledge that the President of the Federal Republic of Nigeria, President Muhammadu Buhari has been doing everything within his powers to attract foreign investments.
“He is also irrevocably committed to creating jobs, especially for our teeming youth,” Shehu-Gusau said securing alternative means of funding the activities of the federation would ease the pressure on government.
He said: “The sponsorship deal signed with Puma attests to the capacity of this board to attract private funding for sports from within and outside the country.
“It will also create jobs for the youth of this country as sports has the capacity to create enormous job opportunities.
“This is part of the reasons we seek autonomy to enable us increase the funding base of the Federation.
ALSO READ: Small businesses can’t survive bank loan charges in Nigeria – NASME
“I am pleased to inform Nigerians that the Puma sponsorship deal, which is in kind, will run from September 1, 2019, to December 31, 2022.
“It is unique in the sense that Puma will deliver kits worth $2.76 million to the Federation in Abuja. “That way, we do not have to spend scarce resources available to be travelling to Germany to collect the kits.
“We are working hard to ease the pressure on government yet some people are bent on frustrating our efforts. “Since the advent of this current leadership, there has been one problem or the other, all geared towards directly administering the Sports Federations.
“The AFN is not the first and if something is not done to curtail their excesses, it will definitely not be the last.”


--- permalink: /404.html layout: default --- 404 Page Not Found Huh...Strange. That page doesnt appear to exist. Must've gotten lost in the Space Time Continuum... There's no place like home...
Huh...Strange. That page doesnt appear to exist. Must've gotten lost in the Space Time Continuum...
There's no place like home...


Timegrid is a DHTML-based AJAXy widget for visualizing time-based events. It is capable of rendering dynamic, calendar-style views of event data from multiple sources of different formats (XML, JSON). Below is a live example that you can play with.
The data file for this Timegrid: month.xml
Just like Google Calendar, Timegrid can be used with zero software installation, server-side or client-side. Timegrid, however, does not depend on any server for its data backend; instead, it can import events from simple XML or JSON files, or optionally be configured to display Google Calendar feeds.
Timegrid is open source software and is licensed under the BSD license.
This software is created and maintained by the SIMILE project, in particular:


Join our student Community
2 weeks, stress free money back guarantee
Facere molestias ex nobis culpa dolores accusantium dolores accusantium dolores accusantium dolores accusantium dolores accusantium dolores accusantium ad veniam. For all your exam preparations and personal development.
New lessons daily
Tutorials by exam experts
Weekly challenge
Community forum
True or false type questions
Daily review
6000#per annum
Full access for 500# a month.


sudo ntpdate host- Query the host without setting the time:
ntpdate -q host- Use an unprivileged port in case a firewall is blocking privileged ports:
sudo ntpdate -u host- Force time to be stepped using `settimeofday` instead of `slewed`:
sudo ntpdate -b host


Writer Shanta Gokhale honoured with lifetime achievement award at Tata Literature Live
Madhuri Vijay’s ‘The Far Field’ won the first book award in fiction
by PTIRenowned writer and playwright Shanta Gokhale was on Sunday presented the lifetime achievement award at Tata Literature Live for her work, which has made a significant impact in the Indian literary field.
The 10th ‘Tata Literature Live! The Mumbai LitFest’ culminated with an awards ceremony on Sunday.
“I feel honoured to be a Lifetime awardee of Tata Literature Live. It is a grand encouragement for me to go on writing and thinking. I am often asked about writing in English and Marathi. Both languages have a rhythm and cadence of their own,” Ms. Gokhale said after receiving the award.
Recipient of the Sangeet Natak Akademi Award, Ms. Gokhale is a multi hyphenate personality. She recently published her memoirs, One Foot on the Ground: A Life Told Through the Body.
The literary awards were also announced at the finale ceremony.
In the fiction space, the first book award was given to The Far Field by Madhuri Vijay (HarperCollins) and book of the year award went to The City and the Sea by Raj Kamal Jha (Penguin Random House).
Also read | ‘The Far Field’ review: A postcard in red and gold
The first book award in the non-fiction category was given to A Stranger Truth: Lessons in Love, Leadership and Courage from India’s Sex Workers by Ashok Alexander (Juggernaut) and book of the year award went to Early Indians: The Story of Our Ancestors and Where We Came From by Tony Joseph (Juggernaut).
Also read | ‘Early Indians’ review: Who we are and where do we come from
The business book of the year award went to Leapfrogging to Pole-vaulting: Creating the Magic of Radical and Sustainable Transformation by Raghunath Mashelkar and Ravi Pandit (Penguin Random House).
Penguin Random House got publisher of the year award.
Tata Trusts’ big little book award for authors in Hindi Children’s Literature went to Prabhat and the big little book awards for Illustrators for children’s books went to Priya Kuriyan.
The festival was held from November 14 to 17 in the city.


{% extends 'blocks/main.html' %} {% block title %}Home{% endblock %} {% block content %}
EventManager is a simple webapp to manage festivals/events. The application is split into four different parts: artist management, band management, podium/stage management and performance management. The codebase is object-oriented and easy to extend, feel free to commit your work. EventManager uses a combination of sqlite3 and Jinja2/Flask to serve its functionality.


A series of tutorials to walk you through our best practices.
Hosted online at https://docs.topseed.io/tutorial/
Topseed aims to be a showcase of best practices and approaches for designers, digital creatives and front end developers who want to build stunning mobile-first web apps with some of the best technologies available now.
What technologies make our cut? Those that let us be the most productive and creative. And that we know to be maintainable. And that we expect to be future-safe.
We welcome scrutiny and feedback from anyone who tries to follow our approaches. We also welcome code contributions from seasoned designers and developers.
This tutorial is published online at https://docs.topseed.io/tutorial/
For more: http://github.com/topseed/topseed
For forum: http://gitter.im/topseed/Lobby


- All Customer, Destination & Product Data listed here will be available for selection in the Weighing Scale form.
- Use this page to manage Customer, Destination & Product Data that are available in the system.
| Customer ID |
Customer Code |
Customer Name |
Date Modified |
Customer Destination Data
| CD ID |
Customer ID |
Destination ID |
Zip Code |
Name |
Location |
Customer Product Data
| CP ID |
Customer ID |
Product ID |
Product Code |
Product Name |
Unit Price |


Carmshl
army || multifandom || tokyo boy in her next life
army || multifandom || tokyo boy in her next life
First of all, Carmshl is short for Carmela Hyacinth Lucañas. She loves to be called Ya-Sho though.
She’s a fan of a lot of things and that includes oppas and kpop groups.
Ya-sho stans a lot of groups/artists as much as she can because she thinks they all deserve to be loved.
But she's not just all about korean stuff, Ya-sho basically loves everything except for the things she doesnt. (Did that make sense? haha) A few of the things she also craves for are Japanese movies, Japanese actors, Japanese festivals that she often sees in the movies. (So much Japanese! ASIAN stuff are so good!) And Ya-sho's memories are what she loves the most. There's nothing a lot more important than that.
1. January 14th: Diary Day/Candle Day
Diaries are given to couples and friends as gifts. Anniversaries, birthdays and other special occasions are recorded into the journals. Also, some celebrate this day as “Candle Day” and give and receive decorative candles.
2. February 14th: Valentine’s Day
Valentine’s Day is celebrated in South Korea like it is everywhere else (in other countries). However there is a slight difference: Only the men get gifts, bummer right? But don’t worry ladies, your frown in going to turn into a smile in March
3. March 14th: White Day
On this day, it’s time for the men to do their part and give us lovely ladies gifts. Some follow the custom that the men should give women gifts that are 3 times the worth of what they received a month ago, ladies rule!
4. April 14th: Black Day
This holiday is mainly for single people. It’s rather a depressing day where single people eat a sticky, black-bean paste noodle dish called jjajangmyun (짜장면) and wish they had a love interest. However, some have turned the depressing day into a celebration where the single people celebrate their independence with noodles!
5. May 14th: Yellow Day/Rose Day
Yellow Day, couples dress in yellow and give each other roses. Singles that didn’t have their fill of lonely-heart noodles on Black Day have the chance to fill up on yellow curry and hope their love life will “spice up.”
6. June 14th: Kiss Day
This is a day to confess your feelings to a crush and start a new relationship with a smooch. Many companies, ranging from lipstick brands to breath mint makers, do their best to capitalize, offering special promotions.
7. July 14th: Silver Day
Couples exchange silver rings and discuss future plans of marriage. Acting as promise rings, the gifts are often given before or after in-person parental introductions.
8. August 14th: Green Day
This is a day designated for drinking soju (a harsh alcohol traditionally made from rice, tasting similar to vodka) and then taking a romantic walk in the woods. Most likely the brain child of a drunk teenager who wanted to be alone with his girlfriend, Green Day is centered around the fact that soju comes in a green bottle.
9. September 14th: Photo Day/Music Day
Most days in Korea are photo and music days, but the 14th of September is when it becomes “official” (or as official as an off-the-calendar holiday can get).
Portrait studios and gimmick photo booths are popular, and it seems like everyone’s taking a reverse-facing camera shot. Noraebangs — singing (karaoke) rooms — are in high demand, as well.
10. October 14th: Wine Day
Couples drink a glass (or bottle) of wine over a romantic dinner. Singles drink away their sorrows.
11. November 14th: Movie Day
Movie theaters are jam-packed on this day, but couples also rent movies, give each other DVD gifts, or go to a DVD room (the “DVD Bang,” or movie room, is a popular Korean hangout on any day). They’re rented for approximately the price of one cinema ticket and can hold a small group of people. The DVDs are somewhat older than what’s playing in the theater, but not by much.
12. December 14th: Hug Day
Running short on reasons to dedicate a special day, Hug Day wraps up the year with a firm and gentle squeeze and a sigh of relief. Couples spend the day hugging each other, while polls on which Korean celebrity is most cuddle-worthy give the singles something to fantasize about. I think this holiday is really adorable!!
[Credits of the information goes to Tara Lowry]
Months have passed ever since we broke up. Time really does fly fast.
I went to my seat and heard Jungkook’s close friends teasing him.
Suddenly, Jimin told him “Go take Y/N to prom”. I froze. “Wow Jimin, nice JOKE.” I said in my head.
“I’m not joking.” Jimin said as if hearing my inside thoughts. I looked over at him, then at Jungkook.
We caught each other’s eyes and avoided them after a second. Jungkook stood up and got out of the room.
Jimin looked disappointed but as soon as he saw me looking at him, he smiled. “I can’t believe you said that.”
I told him and sat on my desk. “I can’t believe you’re still as different to the other girls as ever.
Sitting on desks, being strong.. I still like that, you know.” His voice got low at the end of what he said.

“I know. Okay. Fine. I’m sorry.” He lowered his said and sat down then slowly, his face was burried on the table.
I went back to my seat for the last subject which’s Physics.
One of my faves because of the teacher, Sir Kim, who was really good at handling classes and never bored me.
I was a bit concerned about Jimin though, he was busy texting, probably, Jungkook for missing class.
When the class ended, I went to the locker room and tried (key word: TRIED) to organize my locker.
As I was about to close it, I noticed a small note taped to the bottom.
“Prom? -JK” I looked around hoping he was still there which was unlikely.
“Seriously? This is your way of asking me?” I thought to myself. My phone rang and I answered the call.
It was my sister telling me to hurry up to her place already.
While I was on my way, I met Jimin who said “Good luck” and Namjoon who smiled at me.
It was kind of weird to get a good luck, to be honest.
I shrugged it off and hurried to my sister’s studio which was located at the 2nd floor of her big house.
It’s where she produced music and also taught some chosen people how. “Eonnieee.” I called her.
She opened the studio’s door but it was only enough for me to see her and not the rest of the room.
Maybe she had a guest? I noticed a familiar voice but maybe I was just imagining it. “Your new dress is in my room.”
She told me and– wait what? “Eonnie, what do you mean NEW?” I asked her.
But she just pushed me and told me to go and check it out.
I knew it was tiring if I fought her so I just went to her room for the dress and I saw it lying on her bed.
It’s elegant. Black and mocha looked really good together. After imagining myself wearing it, I saw a note on the floor.
“Wear this.” It said and the handwriting is similar to.. That’s improbable.
Why do I keep imagining things? This isn’t from him.. I think?
Just a few more minutes and prom was about to start. And 2 days ago, I had sudden interactions with Jungkook.
But it felt like it was just awhile ago as I saw him walk up to me. Everyone was staring.
I realized we wore matching outfits and he looked attractive.

He whispered to my ears “Nice dress, princess.” with a chuckle and gave me a kiss on the cheeks as a way of greeting.
I can feel the other girls blushing and screaming internally but I tried to keep myself from getting all red.
I did great with that although I had to tell myself “Be cool. Be cool.” every other minute.
The students were seated with their pairs and the promenade has started.
The host, which was Jin and a Student Council official, started the event with greetings and an opening speech by the former Student Council President, Namjoon,
since the present one was not able to join the party. And then video presentations were shown for the school’s Promenade traditions.
Then dinner. “YES, FINALLY.” I whispered to myself. I heard JK chuckle so I looked at him and tried to look mad but he chuckled again and I pouted.
“Don’t do that.
I avoided his look because I knew I’d be getting red a few seconds after. We were served dinner and he was freaking cute (I SWEAR) when he ate.
“Jungkook.” Alicia, the school flirt who was sitting in the same table as us, called him.
“You have something.. in your um near your mouth.” She said. I looked at him and indeed there was.. spaghetti sauce.
I wanted to laugh at him a bit but then I noticed Alicia getting a tissue to wipe JK’s mouth.
But before she could do it, I smoothly snatched the tissue from her and said “Thanks, Alicia.
Very kind of you to hand his girlfriend a tissue.” Then I wiped Jungkook’s mouth.
Jungkook grinned and told me “Thanks, love.” (Key word: LOVE) with a wink.  I thought to myself.
Alicia looked annoyed. And I probably was blushing. I mean.. I called myself HIS GIRL and he called me LOVE.
Phrases like “oh my gawwdd my hearteu.” was floating in my mind and every time I thought of it, my heart beat faster.
It was time for the dance. Boys asked me for a dance and girls who were really confident asked JK.
But Jungkook didn’t even ask me, how could he enjoy himself now? When I finished dancing waltz with Namjoon,
he told me to send his regards to my sister because they were pretty close.
Taehyung and I danced and I was glad the music played meant we were gonna dance foxtrot.
Taehyung dances well but I loved seeing him dance foxtrot. I danced the same with Hoseok who was the brother of my bestfriend.
He got along well with my sister too. So we were basically like siblings. Then a few songs after, Jimin asked me to do tango with him.
I knew Jimin was also great so I said yes. And inside, I was really waiting for Jungkook to ask me for a dance.
People told us we looked sexy and great when we danced tango. Jimin gave a grin and all the girls were probably jealous I got to dance with him.
I wasn’t able to keep in track on how many songs have passed but JK still has not asked me for a dance.
The hosts told us to take our seats for the announcement of the new members of the prom’s royal family.
First one was the Faces of the Night which were obviously Jin and Chesca. Then they announced the Prom Prince and Princess who were Jimin and Mika.
“YASSS.” I said inside my weird head. Jungkook and the other students cheered too.
It was also exciting to know who the new King and Queen was– Yoonji and Taehyung.
I laughed when Yoonji rejected the Queen’s crown and had the King’s instead.
Taehyung then had to wear the Queen’s which I think was really cute and funny.
After that, the Best Couple was announced and the winners totally surprised me. Jungkook was even ‘shookt’ for a second.
But then he stood up and held my hand. We walked up the stage with the other winners who were just our close friends.
The photographer told us to pose and when he clicked, Jungkook kissed my cheek.
Most students were cheering and asked us to do one more.
We went back to our seats and then each class went up the stage to take a picture together.
And when everyone got their turn, it was time for the last part of prom. The last dance.
I saw Jimin with Mika and dancing beside them was Taetae and Ariesa.
While my eyes were searching through the crowd for JK, I saw Yoongi holding a drink with Julie and his sister, Yoonji,
was talking with Jin and Chesca near the dessert table. And then there was Hoseok trying to get away from the silly mascot.
“Dance?” Jungkook offered his hand to me. I slapped it and crossed my arms. “After you kept me waiting? No.” I said.
Alicia was about to take his hand so I acted fast and “On a second thought.” then I gave both her and JK a wink.
While we were dancing, “Y/N..” he whispered. “Kookie..” I whispered back. Before he could say anything else, I told him everything.
“I’m sorry. I am sorry for the misunderstandings and wanting to hold you back. I was too selfish.
And I am really sorry for that, JK.. But now, I want you to know that I am fine and you should be happy and debut as an idol.
I understand you a lot more now that I also have stepped forward to reach my dream.
I know.. after this, it will be kind of a long time before we can be together again.
But I will support you in any way that I can. I promise that.” I finally told him. I felt all the weight in my heart evaporate.
I was satisfied and happy with what I’ve decided. Without saying anything else, he said “Thank you..”
I smiled and looked at his eyes which were already staring at me.
Before I realized we had already stopped dancing and most of the students were seated already.. he kissed me. “Thank you, Y/N.”
The moment I woke up, my phone vibrated. “Everything’s ready! I organized them all already
So just take your time and get pretty! Because we are about to receive the award for all of our hard work.” A text from Ariesa.
And then I checked my inbox which was full of text messages from my best friends and some were from my sister, Yoonji and the others.
An unknown number texted me. It said “Congrats Y/N! I surely will be able to visit your gallery tonight.
\Can’t wait to see you and the others. -PJMN” I was glad to receive a text from this person.
After all the years we have not seen each other, I was excited to see him again.
I heard Jungkook debuted with his best friends in a soon-to-be-LEGENDARY group but I have not heard from him.
I was busy travelling to every part of the world anyway. Volunteering to help people and animals of every kind was my hobby.
And my job? Painting. I drew every single special memory I ever had from each country.
Like taking care of a penguin for 2 months when it was severely wounded.
Also, when the team and I camped out and I made a friend which was a fox who loved my tent very much.
I named him Vick and although I was a bit scared sometimes, I loved him.
I got ready for the gallery which will be composed of my paintings, Julie’s photographs and Mika’s fashion show with a special guest,
Chesca, who was already famous worldwide as an actress and singer.
All of us succeeded which made me happy with the thought that our efforts were not put into the trash can.
When I arrived at the venue, I found myself looking around and waiting for Jimin and our close friends.
The event started but I have not seen them yet.
My best friends and I proceeded with the program and greeted the important visitors with admiration and respect.
I went to my part of the gallery and saw Hoseok and then Namjoon who was with my sister.
I was really happy seeing both of them together again and Hoseok looked amused with the paintings.
Then a few minutes later, Mika’s fashion show started and I was seated at the front.
Julie was everywhere, trying to take the best pictures. Also in the front seats were Jin, Ariesa and Taehyung.
I got up to go nearer to them but a visitor accidentally spilled wine on my dress.
She apologized and I hurried to the bathroom. I saw Yoonji standing with a bottle of wine. “You never changed.”
I told her and she chuckled a bit. “Here, wear this.” She handed me a paper bag and went out with a smile.
I checked what was inside and it was a dress.. the dress I wore for prom. I had no choice, I guess?
So I changed and arrived at the show which was ending. I walked to Ariesa and my best friends who were with the guests.
They congratulated us for doing such an amazing gallery and gave us great ratings and comments.
There was still one more part of the gallery that I was not able to take a look at– photographs.
When I went there minutes ago, it was full of people. But the number has died down a bit now. Julie’s pictures entertained me.
Photographs are a bit similar to paintings, you know. The only difference is that you use a camera in one and a brush with the other.
I walked and walked.. and met Jimin. He was looking at the photographs and it seemed like he felt all the feelings of that one single photograph.
It was a picture of a girl who was looking up the sky from her window and a boy who was looking at her from another window.
When he turned around, he looked kind of shocked to see me and then he laughed. “Long time no see.” He pinched my cheeks.
We did not talk long but he told me we’d be seeing each other soon after this. He waved goodbye and I continued walking.
“Damn, I miss that guy.” I thought to myself as Jimin left. And then I saw one picture that hooked me. The picture..
It was us. Jungkook and I dancing in prom. I went nearer to it. I felt my tears fall down and seconds after, someone hugged me from the back.
“Nice dress, princess.” And kissed my cheeks. I turned around. “Kookie..” I whispered.
“What was the theme of that prom again?” He asked me with a smile plastered on his face. “One last time.”
I remembered and told him. “One last time?” He asked me seriously. “Yes, one last time.”
I replied. He held my hands and said “Thank you, Y/N.” Then he moved his hands to my face and kissed me on my forehead.
Since BTS has won the BBMAS and gained a lot of attention in the west, a lot of news websites have been writing articles about them and their achievement at the BBMAS. Here are all the articles since they have been nominated and won the BBMAS.
Today, I’m gonna be honest
Lets start with your hair
It’s not silky
Nor as black as ebony
It is just there
To make you look human
And I don’t really find
It that nice
Now with your eyes,
The only reason why
I call them pretty
Is because I see me
My reflection, my beauty
And not because I feel
That its sent from above
God,
Those eyes look so sad,
My love
Then your lips
It’s so dry
Maybe that’s why
You’re thirsty
Too thirsty that it made me think
You were dry land
Wanting the whole ocean
And I was water in a cactus
In the palace of the king
Of the sun and the sand
And I just cant.

Who are the HOmiEs? Well, I'm gonna tell you about them right now.
♦ Allysa (Its pronounced as ALISA, okay? good)
Nickname: Asylla
Best Part: FOREHEAD.
How old: Very old. Just kidding, she's 16.
Role: Shining shimmering "samok na" older sister :)
Two Words: Obliging sunshine
♦ Julienne
Nickname: Jumi
Best Part: THIGHS.
How old: Just a month older than me, we're both 15.
Role: Disciplinary committee president (HAHA)
Two Words: Chicken carat
♦ Carmela
Nickname: Ya-sho :) (I decide what I want to be called ok)
Best Part: Back (Classmates know what I mean)
How old: Youngest, 15.

No. of Chickens Eaten @Burrow: 7
Two Words: Random things
♦ Mary Rose
Nickname: Marose
Best Part: Front (Classmates know what I mean)
How old: 2nd oldest, oldie~
No. of Chickens Eaten @Burrow: 8
Two Words: SOC SCI!

--
But I realized that it was just a reflection
--
to ruin someone else in order to fix yourself.
--
"You practiced tricks with my heart.
I adored the game so I let you play anyway."
--
"The house burned down a long time ago,
but the ghosts are still on fire."
[one of my favorites]
--
"To love me
is to pick a daisy in a field of roses."
--
"I would die for you.
But I will not live for you."
--
"This moment will be
just another story someday."
--
Now here's a poem from my drafts
that I have been wanting to share for quite a while now.
Here's to sad songs
Played in the dark
For the missed calls
And broken hearts
Here's to tear stained pillows
Every sleepless nights
I just miss the you
That stayed by my side
Here's to rotten roses
And getting rid of them
Along our memories
Which were once gems
Here's to the girl
Who's still alive
Despite the assholes
That ruined her life
Here's to the boy
Who keeps moving on
Despite the bitches
That left him alone
Here's to all
Here's to who's here
That loves to fall
And loves to tear
--


{% extends "base.html" %} {% block title %}Blogly - Confirm your account{% endblock %} {% block content %}
In order to access this site, first you have to confirm you account by following the confirmation link sent to your registered email
For another confirmation link...click here


A Planet Hunters TESS light curve played through a simple synthesiser, mapping the flux values to notes.


I'm a software developer with a background in manufacturing management. I picked up programming as a way to improve my efficiency and help my team with repetitive tasks. From there I just kept getting more excited about coding as I learned about the amazing tools people build. I'm looking to join a passionate team where I can put my new skills to work, make some new friends, and contribute to the team's success. https://www.linkedin.com/in/jnelsonjava/
Hello everyone! I’m Darius Lee Pasilaban. I’m a military veteran who chose to shift into the Tech industry as a software developer. I see the software development industry as a challenging field to work in, it provides flexibility with time and location and is an in-demand industry with good compensation. I also chose the Software Development industry to work in, because aside from the challenges, there’s also a lot of smart people that I can learn from. These challenges and learning from professionals who are smarter than I am, will help my growth to be a better developer, and to provide effective and timely software development solutions. https://www.linkedin.com/in/pdariuslee/
My name is Jae and I'm currently enrolled at CodeFellows studying software development. My background is in IT support and IT application, but I always had a passion for developing new software, even though I have no experience in writing codes. My goal after completing CodeFellows is to seek employment for a big corporation where I can collaborate with others and utilized what I learned and apply them in real life software projects. Im passionate, goal-driven, and highly motivated to start my new journey. https://www.linkedin.com/in/jae-y-choi-99b72b1b1/
Welcome everyone, I’m Matthew Petersen. I’m a Software Developer with a background in military police. I decided to do a shift in careers because I wanted a more challenging but rewarding career and career in which I could make my own path. I chose programming because I knew nothing about it other than it was a skill that could be learned and Seattle has a growing tech industry that I knew I should try to take advantage of. The more I learn and use my skills, the more excited I get about my career and my future to come in tech. I’m looking to join a team where we can collaborate, grow and become the best versions of ourselves. https://www.linkedin.com/in/matthewpetersen1995/