Svatah ADE
ADE is an acronym for Automation Development Environment. It is a desktop client built using Electron and Svatah's behaviour driven testing framework to help you build and run your Svatah Flows locally. It provides you with one click setup for running your integration test for web apps and API. It is super easy to create a new project, just follow the getting started guides to create your project.


The Freight CLI has several commands and most of them interact with a Freight Server. You must either setup a Freight Server or use one that already exists.
Install the Freight command line utility. Might require sudo
depending on your system setup.
npm install -g vladikoff/freight
This will download the Freight CLI from GitHub, avoiding NPM. It is advised to download the CLI independent of NPM.
After you're done downloading the CLI, setup the default FREIGHT_URL
environment variable:
export FREIGHT_URL=http://freight-server.example
You can always specify a custom server using the --url
or -u
option.
All documentation below assumes that you have FREIGHT_URL
set.
To download a bundle simply open the project that has a package.json
or bower.json
in the terminal and run:
FREIGHT_URL=http://freight-server.example freight
If the bundle exists on the server and the dependencies match, then Freight will download the bundle and extract it.
Using the freight track
and freight create
commands you can tell the server to initialize a project bundle.
These actions require server authentication to avoid unauthorized bundles.
The Freight password is configured on the server, you can learn more about this password in the server documentation.
Use the FREIGHT_PASSWORD
environment variable to avoid password prompts.
Set it using:
export FREIGHT_PASSWORD=your_password
Use different passwords using instead of the default one:
FREIGHT_PASSWORD=your_password freight command_here
Track your master
branch:
freight track https://github.com/vladikoff/freight.git
Track other branches:
freight track https://github.com/vladikoff/freight.git -b development
From a project directory with a package.json
or a bower.json
.
freight create -u http://freight-server.example
Setting up Freight on CI environments is not complicated. It works the same way as the downloading bundles section.
In your .travis.yml
:
freight -u http://freight.dev.lcip.org
All available command line options are listed below:
$ freight --help
--help
-h Display help.
--url
-u Freight Server URL. Example: "http://example.com"
--verbose
-v Verbose mode. A lot more information output.
--create
-c Create a bundle on a remote server. Requires password.
--password
-p Remote Freight Server password to create Freight bundles.
--force
-f A way to force create a bundle. Requires password and create commands.
--silent
No output.


{% extends "layout.html" %} {% block content %}
Please fill out the form and submit to add a new tweet!


PSG identify Antoine Griezmann as replacement for Premier League transfer target Kylian Mbappe
Mbappe has been strongly linked with a big-money move, with Real Madrid and Liverpool among the teams understood to be keen on signing the French World Cup winner
by Matt Maltby, https://www.mirror.co.uk/authors/matt-maltby/Paris Saint-Germain are reportedly monitoring Antoine Griezmann's situation at Barcelona as they prepare to face the possibility of life without Kylian Mbappe.
Mbappe has been strongly linked with a big-money move in the summer, with Real Madrid and Liverpool among the teams understood to be keen on signing the French World Cup winner.
The Reds have long been linked with the French star, after first making an approach for him back in 2017 when he was at Monaco. And a recent link up with Nike as the Merseyside club’s kit sponsor has added fuel to the fire.
Mbappe is one of Nike’s biggest stars, and there were suggestions this month that Real Madrid president Florentino Perez is genuinely worried the English Champions League winners have the resources to outbid even his own club.
And Marca claim that PSG have already begun to look at potential replacements, with Barca's struggling forward Griezmann at the top of their list.
Griezmann, who also starred as France lifted the 2018 World Cup crown in Russia, has endured a stuttering start to his Nou Camp career after joining from La Liga rivals Atletico Madrid in the summer.
The forward has notched just four goals in 15 appearances and is yet to win over the Barca fans.
He would seemingly be a like-for-like replacement for Mbappe, who is believed to be pushing for a dream move to Spanish giants Real Madrid.
And, while Liverpool manager Jurgen Klopp would love to sign the former Monaco ace, he recently conceded that a move is unlikely to happen.
"OK, from a sporting point of view, there are not a lot of reasons to not sign Mbappe, what a player he is,” Klopp said.
“But it is about the money of course. No chance. Absolutely no chance, sorry for killing that story.
"I don't think there is a club in the world that can buy Kylian Mbappe from PSG. And we are involved in that too. We cannot do it, it is as easy as that.
"We have nothing (more) to say about it to be honest, but [buying] this calibre of player is difficult."


In this notebook, some template code has already been provided for you, and you will need to implement additional functionality to successfully complete this project. You will not need to modify the included code beyond what is requested. Sections that begin with '(IMPLEMENTATION)' in the header indicate that the following block of code will require additional functionality which you must provide. Instructions will be provided for each section, and the specifics of the implementation are marked in the code block with a 'TODO' statement. Please be sure to read the instructions carefully!
Note: Once you have completed all of the code implementations, you need to finalize your work by exporting the iPython Notebook as an HTML document. Before exporting the notebook to html, all of the code cells need to have been run so that reviewers can see the final implementation and output. You can then export the notebook by using the menu above and navigating to \n", "File -> Download as -> HTML (.html). Include the finished document along with this notebook as your submission.
In addition to implementing code, there will be questions that you must answer which relate to the project and your implementation. Each section where you will answer a question is preceded by a 'Question X' header. Carefully read each question and provide thorough answers in the following text boxes that begin with 'Answer:'. Your project submission will be evaluated based on your answers to each of the questions and the implementation you provide.
Note: Code and Markdown cells can be executed using the Shift + Enter keyboard shortcut. Markdown cells can be edited by double-clicking the cell to enter edit mode.
The rubric contains optional "Stand Out Suggestions" for enhancing the project beyond the minimum requirements. If you decide to pursue the "Stand Out Suggestions", you should include the code in this IPython notebook.
In this notebook, you will make the first steps towards developing an algorithm that could be used as part of a mobile or web app. At the end of this project, your code will accept any user-supplied image as input. If a dog is detected in the image, it will provide an estimate of the dog's breed. If a human is detected, it will provide an estimate of the dog breed that is most resembling. The image below displays potential sample output of your finished project (... but we expect that each student's algorithm will behave differently!).
In this real-world setting, you will need to piece together a series of models to perform different tasks; for instance, the algorithm that detects humans in an image will be different from the CNN that infers dog breed. There are many points of possible failure, and no perfect algorithm exists. Your imperfect solution will nonetheless create a fun user experience!
We break the notebook into separate steps. Feel free to use the links below to navigate the notebook.
In the code cell below, we import a dataset of dog images. We populate a few variables through the use of the load_files
function from the scikit-learn library:
train_files
, valid_files
, test_files
- numpy arrays containing file paths to imagestrain_targets
, valid_targets
, test_targets
- numpy arrays containing onehot-encoded classification labels dog_names
- list of string-valued dog breed names for translating labelsimport cv2
import matplotlib.pyplot as plt
%matplotlib inline
def visualize_img(img_path, ax):
img = cv2.imread(img_path)
ax.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
def show_image_grid(files):
fig = plt.figure(figsize=(20, 10))
show_images = min(len(files), 12)
images_per_row = min(len(files), 12)
for i in range(show_images):
ax = fig.add_subplot(int(show_images/images_per_row), images_per_row, i + 1, xticks=[], yticks=[])
visualize_img(files[i], ax)
plt.show()
from sklearn.datasets import load_files
from keras.utils import np_utils
import numpy as np
from glob import glob
# define function to load train, test, and validation datasets
def load_dataset(path):
data = load_files(path)
dog_files = np.array(data['filenames'])
dog_targets = np_utils.to_categorical(np.array(data['target']), 133)
return dog_files, dog_targets
# load train, test, and validation datasets
train_files, train_targets = load_dataset('dogImages/train')
valid_files, valid_targets = load_dataset('dogImages/valid')
test_files, test_targets = load_dataset('dogImages/test')
# load list of dog names
dog_names = [item[20:-1] for item in sorted(glob("dogImages/train/*/"))]
# print statistics about the dataset
print('There are %d total dog categories.' % len(dog_names))
print('There are %s total dog images.\n' % len(np.hstack([train_files, valid_files, test_files])))
print('There are %d training dog images.' % len(train_files))
print('There are %d validation dog images.' % len(valid_files))
print('There are %d test dog images.'% len(test_files))
show_image_grid(train_files)
In the code cell below, we import a dataset of human images, where the file paths are stored in the numpy array human_files
.
import random
random.seed(8675309)
# load filenames in shuffled human dataset
human_files = np.array(glob("lfw/*/*"))
random.shuffle(human_files)
# print statistics about the dataset
print('There are %d total human images.' % len(human_files))
show_image_grid(human_files)
We use OpenCV's implementation of Haar feature-based cascade classifiers to detect human faces in images. OpenCV provides many pre-trained face detectors, stored as XML files on github. We have downloaded one of these detectors and stored it in the haarcascades
directory.
In the next code cell, we demonstrate how to use this detector to find human faces in a sample image.
##### import cv2
import matplotlib.pyplot as plt
%matplotlib inline
# extract pre-trained face detector
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_alt.xml')
# load color (BGR) image
img = cv2.imread(human_files[3])
# convert BGR image to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# find faces in image
faces = face_cascade.detectMultiScale(gray)
# print number of faces detected in the image
print('Number of faces detected:', len(faces))
# get bounding box for each detected face
for (x,y,w,h) in faces:
# add bounding box to color image
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
# convert BGR image to RGB for plotting
cv_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# display the image, along with bounding box
plt.imshow(cv_rgb)
plt.show()
Before using any of the face detectors, it is standard procedure to convert the images to grayscale. The detectMultiScale
function executes the classifier stored in face_cascade
and takes the grayscale image as a parameter.
In the above code, faces
is a numpy array of detected faces, where each row corresponds to a detected face. Each detected face is a 1D array with four entries that specifies the bounding box of the detected face. The first two entries in the array (extracted in the above code as x
and y
) specify the horizontal and vertical positions of the top left corner of the bounding box. The last two entries in the array (extracted here as w
and h
) specify the width and height of the box.
We can use this procedure to write a function that returns True
if a human face is detected in an image and False
otherwise. This function, aptly named face_detector
, takes a string-valued file path to an image as input and appears in the code block below.
# returns "True" if face is detected in image stored at img_path
def face_detector(img_path):
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray)
return len(faces) > 0
Question 1: Use the code cell below to test the performance of the face_detector
function.
human_files
have a detected human face? dog_files
have a detected human face?  You will see that our algorithm falls short of this goal, but still gives acceptable performance. We extract the file paths for the first 100 images from each of the datasets and store them in the numpy arrays human_files_short
and dog_files_short
.
Answer:
human_files_short = human_files[:100]
dog_files_short = train_files[:100]
# Do NOT modify the code above this line.
face_detection_sample_size = len(human_files_short)
## TODO: Test the performance of the face_detector algorithm
## on the images in human_files_short and dog_files_short.
undetected_human_faces = []
undetected_dog_faces = []
for i in range(face_detection_sample_size):
if face_detector(human_files_short[i]) == 0:
undetected_human_faces.append(human_files_short[i])
if face_detector(dog_files_short[i]) == 0:
undetected_dog_faces.append(dog_files_short[i])
print("Percentage of human faces %d%%" % int(face_detection_sample_size - len(undetected_human_faces)))
print("Percentage of dog faces %d%%" % int(face_detection_sample_size - len(undetected_dog_faces)))
if len(undetected_human_faces):
print("\nMisclassified human faces")
show_image_grid(undetected_human_faces[:6])
if len(undetected_dog_faces):
print("\nMisclassified dog faces")
show_image_grid(undetected_dog_faces[:6])
Question 2: This algorithmic choice necessitates that we communicate to the user that we accept human images only when they provide a clear view of a face (otherwise, we risk having unneccessarily frustrated users!). In your opinion, is this a reasonable expectation to pose on the user? If not, can you think of a way to detect humans in images that does not necessitate an image with a clearly presented face?
Answer:
We suggest the face detector from OpenCV as a potential way to detect human images in your algorithm, but you are free to explore other approaches, especially approaches that make use of deep learning :). Please use the code cell below to design and test your own face detection algorithm. If you decide to pursue this optional task, report performance on each of the datasets.
In this section, we use a pre-trained ResNet-50 model to detect dogs in images. Our first line of code downloads the ResNet-50 model, along with weights that have been trained on ImageNet, a very large, very popular dataset used for image classification and other vision tasks. ImageNet contains over 10 million URLs, each linking to an image containing an object from one of 1000 categories. Given an image, this pre-trained ResNet-50 model returns a prediction (derived from the available categories in ImageNet) for the object that is contained in the image.
from keras.applications.resnet50 import ResNet50
# define ResNet50 model
ResNet50_model = ResNet50(weights='imagenet')
When using TensorFlow as backend, Keras CNNs require a 4D array (which we'll also refer to as a 4D tensor) as input, with shape
$$ (\text{nb_samples}, \text{rows}, \text{columns}, \text{channels}), $$
where nb_samples
corresponds to the total number of images (or samples), and rows
, columns
, and channels
correspond to the number of rows, columns, and channels for each image, respectively.
The path_to_tensor
function below takes a string-valued file path to a color image as input and returns a 4D tensor suitable for supplying to a Keras CNN. The function first loads the image and resizes it to a square image that is $224 \times 224$ pixels. Next, the image is converted to an array, which is then resized to a 4D tensor. In this case, since we are working with color images, each image has three channels. Likewise, since we are processing a single image (or sample), the returned tensor will always have shape
$$ (1, 224, 224, 3). $$
The paths_to_tensor
function takes a numpy array of string-valued image paths as input and returns a 4D tensor with shape
$$ (\text{nb_samples}, 224, 224, 3). $$
Here, nb_samples
is the number of samples, or number of images, in the supplied array of image paths. It is best to think of nb_samples
as the number of 3D tensors (where each 3D tensor corresponds to a different image) in your dataset!
from keras.preprocessing import image
from tqdm import tqdm
def path_to_tensor(img_path):
# loads RGB image as PIL.Image.Image type
img = image.load_img(img_path, target_size=(224, 224))
# convert PIL.Image.Image type to 3D tensor with shape (224, 224, 3)
x = image.img_to_array(img)
# convert 3D tensor to 4D tensor with shape (1, 224, 224, 3) and return 4D tensor
return np.expand_dims(x, axis=0)
def paths_to_tensor(img_paths):
list_of_tensors = [path_to_tensor(img_path) for img_path in tqdm(img_paths)]
return np.vstack(list_of_tensors)
Getting the 4D tensor ready for ResNet-50, and for any other pre-trained model in Keras, requires some additional processing. First, the RGB image is converted to BGR by reordering the channels. All pre-trained models have the additional normalization step that the mean pixel (expressed in RGB as $[103.939, 116.779, 123.68]$ and calculated from all pixels in all images in ImageNet) must be subtracted from every pixel in each image. This is implemented in the imported function preprocess_input
. If you're curious, you can check the code for preprocess_input
here.
Now that we have a way to format our image for supplying to ResNet-50, we are now ready to use the model to extract the predictions. This is accomplished with the predict
method, which returns an array whose $i$-th entry is the model's predicted probability that the image belongs to the $i$-th ImageNet category. This is implemented in the ResNet50_predict_labels
function below.
By taking the argmax of the predicted probability vector, we obtain an integer corresponding to the model's predicted object class, which we can identify with an object category through the use of this dictionary.
from keras.applications.resnet50 import preprocess_input, decode_predictions
def ResNet50_predict_labels(img_path):
# returns prediction vector for image located at img_path
img = preprocess_input(path_to_tensor(img_path))
return np.argmax(ResNet50_model.predict(img))
While looking at the dictionary, you will notice that the categories corresponding to dogs appear in an uninterrupted sequence and correspond to dictionary keys 151-268, inclusive, to include all categories from 'Chihuahua'
to 'Mexican hairless'
. Thus, in order to check to see if an image is predicted to contain a dog by the pre-trained ResNet-50 model, we need only check if the ResNet50_predict_labels
function above returns a value between 151 and 268 (inclusive).
We use these ideas to complete the dog_detector
function below, which returns True
if a dog is detected in an image (and False
if not).
### returns "True" if a dog is detected in the image stored at img_path
def dog_detector(img_path):
prediction = ResNet50_predict_labels(img_path)
return ((prediction <= 268) & (prediction >= 151))
Question 3: Use the code cell below to test the performance of your dog_detector
function.
human_files_short
have a detected dog? dog_files_short
have a detected dog?Answer:
### TODO: Test the performance of the dog_detector function
### on the images in human_files_short and dog_files_short.
undetected_human_faces = []
undetected_dog_faces = []
for i in range(face_detection_sample_size):
if dog_detector(human_files_short[i]) == 0:
undetected_human_faces.append(human_files_short[i])
if dog_detector(dog_files_short[i]) == 0:
undetected_dog_faces.append(dog_files_short[i])
print("Percentage of human faces %d%%" % int(face_detection_sample_size - len(undetected_human_faces)))
print("Percentage of dog faces %d%%" % int(face_detection_sample_size - len(undetected_dog_faces)))
if len(undetected_human_faces):
print("\nMisclassified human faces")
show_image_grid(undetected_human_faces[:6])
if len(undetected_dog_faces):
print("\nMisclassified dog faces")
show_image_grid(undetected_dog_faces[:6])
Now that we have functions for detecting humans and dogs in images, we need a way to predict breed from images. In this step, you will create a CNN that classifies dog breeds. You must create your CNN from scratch (so, you can't use transfer learning yet!), and you must attain a test accuracy of at least 1%. In Step 5 of this notebook, you will have the opportunity to use transfer learning to create a CNN that attains greatly improved accuracy.
Be careful with adding too many trainable layers! More parameters means longer training, which means you are more likely to need a GPU to accelerate the training process. Thankfully, Keras provides a handy estimate of the time that each epoch is likely to take; you can extrapolate this estimate to figure out how long it will take for your algorithm to train.
We mention that the task of assigning breed to dogs from images is considered exceptionally challenging. To see why, consider that even a human would have great difficulty in distinguishing between a Brittany and a Welsh Springer Spaniel.
| Brittany | Welsh Springer Spaniel |
|---|---|
It is not difficult to find other dog breed pairs with minimal inter-class variation (for instance, Curly-Coated Retrievers and American Water Spaniels).
| Curly-Coated Retriever | American Water Spaniel |
|---|---|
Likewise, recall that labradors come in yellow, chocolate, and black. Your vision-based algorithm will have to conquer this high intra-class variation to determine how to classify all of these different shades as the same breed.
| Yellow Labrador | Chocolate Labrador | Black Labrador |
|---|---|---|
We also mention that random chance presents an exceptionally low bar: setting aside the fact that the classes are slightly imabalanced, a random guess will provide a correct answer roughly 1 in 133 times, which corresponds to an accuracy of less than 1%.
Remember that the practice is far ahead of the theory in deep learning. Experiment with many different architectures, and trust your intuition. And, of course, have fun!
We rescale the images by dividing every pixel in every image by 255.
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
# pre-process the data for Keras
train_tensors = paths_to_tensor(train_files).astype('float32')/255
valid_tensors = paths_to_tensor(valid_files).astype('float32')/255
test_tensors = paths_to_tensor(test_files).astype('float32')/255
Create a CNN to classify dog breed. At the end of your code cell block, summarize the layers of your model by executing the line:
model.summary()
We have imported some Python modules to get you started, but feel free to import as many modules as you need. If you end up getting stuck, here's a hint that specifies a model that trains relatively fast on CPU and attains >1% test accuracy in 5 epochs:
Question 4: Outline the steps you took to get to your final CNN architecture and your reasoning at each step. If you chose to use the hinted architecture above, describe why you think that CNN architecture should work well for the image classification task.
Answer:
I have chosen hinted architecture since it is know to work well for image classification by using several convolutional layers with exponentially increasing number of filters (16, 32, 64, 128, 256, 512). Early filters learn basic graphical features. Later ones learn more advanced ones specific to our training set. Max pooling provide dimention reduction to keep trainiing time reasonable. Batch normalization is used to increase independnce of each hidden layer and improve model generalization. Dropout step has been added to avoid overfiting. Output layer is dense layer of 133 nodes to predicts final classes. The model is a result of series of experiments that have lead to the current architecture.
from keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D
from keras.layers import Dropout, Flatten, Dense
from keras.models import Sequential
from keras.layers.normalization import BatchNormalization
model = Sequential()
### TODO: Define your architecture.
model.add(Conv2D(filters=16, kernel_size=2, activation='relu', input_shape=(224, 224, 3)))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Conv2D(filters=32, kernel_size=2, activation='relu', kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Conv2D(filters=64, kernel_size=2, activation='relu', kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Conv2D(filters=128, kernel_size=2, activation='relu', kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Conv2D(filters=256, kernel_size=2, activation='relu', kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Conv2D(filters=512, kernel_size=2, activation='relu', kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=2))
model.add(BatchNormalization())
model.add(Dropout(0.3))
model.add(GlobalAveragePooling2D())
model.add(Dense(133, activation='softmax'))
model.summary()
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
Train your model in the code cell below. Use model checkpointing to save the model that attains the best validation loss.
You are welcome to augment the training data, but this is not a requirement.
from keras.callbacks import ModelCheckpoint, EarlyStopping
### TODO: specify the number of epochs that you would like to use to train the model.
from keras.preprocessing.image import ImageDataGenerator
# create and configure augmented image generator
datagen = ImageDataGenerator(
rotation_range=10,
zoom_range=0.2,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True)
# fit augmented image generator on data
datagen.fit(train_tensors)
epochs = 100
### Do NOT modify the code below this line.
checkpointer = ModelCheckpoint(filepath='saved_models/weights.best.from_scratch.hdf5',
verbose=1, save_best_only=True)
# Stop the training if the model shows no improvement
stopper = EarlyStopping(monitor='val_loss', min_delta=0.05, patience=3, verbose=1, mode='auto')
model.fit(train_tensors, train_targets,
validation_data=(valid_tensors, valid_targets),
epochs=epochs, batch_size=20,
callbacks=[checkpointer, stopper], verbose=1)
model.load_weights('saved_models/weights.best.from_scratch.hdf5')
Try out your model on the test dataset of dog images. Ensure that your test accuracy is greater than 1%.
# get index of predicted dog breed for each image in test set
dog_breed_predictions = [np.argmax(model.predict(np.expand_dims(tensor, axis=0))) for tensor in test_tensors]
# report test accuracy
test_accuracy = 100*np.sum(np.array(dog_breed_predictions)==np.argmax(test_targets, axis=1))/len(dog_breed_predictions)
print('Test accuracy: %.4f%%' % test_accuracy)
bottleneck_features = np.load('bottleneck_features/DogVGG16Data.npz')
train_VGG16 = bottleneck_features['train']
valid_VGG16 = bottleneck_features['valid']
test_VGG16 = bottleneck_features['test']
The model uses the the pre-trained VGG-16 model as a fixed feature extractor, where the last convolutional output of VGG-16 is fed as input to our model. We only add a global average pooling layer and a fully connected layer, where the latter contains one node for each dog category and is equipped with a softmax.
VGG16_model = Sequential()
VGG16_model.add(GlobalAveragePooling2D(input_shape=train_VGG16.shape[1:]))
VGG16_model.add(Dense(133, activation='softmax'))
VGG16_model.summary()
VGG16_model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
checkpointer = ModelCheckpoint(filepath='saved_models/weights.best.VGG16.hdf5',
verbose=1, save_best_only=True)
VGG16_model.fit(train_VGG16, train_targets,
validation_data=(valid_VGG16, valid_targets),
epochs=20, batch_size=20, callbacks=[checkpointer], verbose=1)
VGG16_model.load_weights('saved_models/weights.best.VGG16.hdf5')
Now, we can use the CNN to test how well it identifies breed within our test dataset of dog images. We print the test accuracy below.
# get index of predicted dog breed for each image in test set
VGG16_predictions = [np.argmax(VGG16_model.predict(np.expand_dims(feature, axis=0))) for feature in test_VGG16]
# report test accuracy
test_accuracy = 100*np.sum(np.array(VGG16_predictions)==np.argmax(test_targets, axis=1))/len(VGG16_predictions)
print('Test accuracy: %.4f%%' % test_accuracy)
from extract_bottleneck_features import *
def VGG16_predict_breed(img_path):
# extract bottleneck features
bottleneck_feature = extract_VGG16(path_to_tensor(img_path))
# obtain predicted vector
predicted_vector = VGG16_model.predict(bottleneck_feature)
# return dog breed that is predicted by the model
return dog_names[np.argmax(predicted_vector)]
You will now use transfer learning to create a CNN that can identify dog breed from images. Your CNN must attain at least 60% accuracy on the test set.
In Step 4, we used transfer learning to create a CNN using VGG-16 bottleneck features. In this section, you must use the bottleneck features from a different pre-trained model. To make things easier for you, we have pre-computed the features for all of the networks that are currently available in Keras:
The files are encoded as such:
Dog{network}Data.npz
where {network}
, in the above filename, can be one of VGG19
, Resnet50
, InceptionV3
, or Xception
. Pick one of the above architectures, download the corresponding bottleneck features, and store the downloaded file in the bottleneck_features/
folder in the repository.
In the code block below, extract the bottleneck features corresponding to the train, test, and validation sets by running the following:
bottleneck_features = np.load('bottleneck_features/Dog{network}Data.npz')
train_{network} = bottleneck_features['train']
valid_{network} = bottleneck_features['valid']
test_{network} = bottleneck_features['test']
##### TODO: Obtain bottleneck features from another pre-trained CNN.
bottleneck_features = np.load('bottleneck_features/DogXceptionData.npz')
train_Xception = bottleneck_features['train']
valid_Xception = bottleneck_features['valid']
test_Xception = bottleneck_features['test']
#from keras.applications.vgg19 import VGG19; VGG19().summary()
bottleneck_features = np.load('bottleneck_features/DogVGG19Data.npz')
train_VGG19 = bottleneck_features['train']
valid_VGG19 = bottleneck_features['valid']
test_VGG19 = bottleneck_features['test']
bottleneck_features = np.load('bottleneck_features/DogResnet50Data.npz')
train_Resnet50 = bottleneck_features['train']
valid_Resnet50 = bottleneck_features['valid']
test_Resnet50 = bottleneck_features['test']
train_transfer = train_Xception
valid_transfer = valid_Xception
test_transfer = test_Xception
Create a CNN to classify dog breed. At the end of your code cell block, summarize the layers of your model by executing the line:
<your model's name>.summary()
Question 5: Outline the steps you took to get to your final CNN architecture and your reasoning at each step. Describe why you think the architecture is suitable for the current problem.
Answer:
Transfer learning technique is used for proposed classificator allowing us to define very simple architechure. The architechure consists of two layers. GlobalAveragePooling2D layer is used to avoid overfiting and reduce data dimentionality. Experiments showed significanly better perfomance of GlobalAveragePooling2D vs Flatten for givven bootleneck features and training data. Final Dense fully connected layer with softmax activation is used to output probabilities of breeds we are see to classify
### TODO: Define your architecture.
tmodel = Sequential()
tmodel.add(GlobalAveragePooling2D(input_shape=train_transfer.shape[1:]))
tmodel.add(Dense(133, activation='softmax'))
tmodel.summary()
### TODO: Compile the model.
tmodel.compile(loss='categorical_crossentropy', optimizer='rmsprop',
metrics=['accuracy'])
Train your model in the code cell below. Use model checkpointing to save the model that attains the best validation loss.
You are welcome to augment the training data, but this is not a requirement.
### TODO: Train the model.
from keras.callbacks import ModelCheckpoint, EarlyStopping
epochs = 100
# Stop the training if the model shows no improvement
stopper = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=10, verbose=1, mode='auto')
### Do NOT modify the code below this line.
checkpointer = ModelCheckpoint(filepath='saved_models/weights.transfer.best.hdf5',
verbose=1, save_best_only=True)
tmodel.fit(train_transfer, train_targets,
validation_data=(valid_transfer, valid_targets),
epochs=epochs, batch_size=20,
callbacks=[checkpointer, stopper], verbose=1)
### TODO: Load the model weights with the best validation loss.
tmodel.load_weights('saved_models/weights.transfer.best.hdf5')
Try out your model on the test dataset of dog images. Ensure that your test accuracy is greater than 60%.
### TODO: Calculate classification accuracy on the test dataset.
# get index of predicted dog breed for each image in test set
t_predictions = [np.argmax(tmodel.predict(np.expand_dims(feature, axis=0))) for feature in test_transfer]
# report test accuracy
test_accuracy = 100*np.sum(np.array(t_predictions)==np.argmax(test_targets, axis=1))/len(t_predictions)
print('Test accuracy: %.4f%%' % test_accuracy)
Write a function that takes an image path as input and returns the dog breed (Affenpinscher
, Afghan_hound
, etc) that is predicted by your model.
Similar to the analogous function in Step 5, your function should have three steps:
dog_names
array defined in Step 0 of this notebook to return the corresponding breed.The functions to extract the bottleneck features can be found in extract_bottleneck_features.py
, and they have been imported in an earlier code cell. To obtain the bottleneck features corresponding to your chosen CNN architecture, you need to use the function
extract_{network}
where {network}
, in the above filename, should be one of VGG19
, Resnet50
, InceptionV3
, or Xception
.
### TODO: Write a function that takes a path to an image as input
### and returns the dog breed that is predicted by the model.
from extract_bottleneck_features import *
def Xception_predict_breed(img_path):
# extract bottleneck features
bottleneck_feature = extract_Xception(path_to_tensor(img_path))
# obtain predicted vector
predicted_vector = tmodel.predict(bottleneck_feature)
# return dog breed that is predicted by the model
return dog_names[np.argmax(predicted_vector)]
Write an algorithm that accepts a file path to an image and first determines whether the image contains a human, dog, or neither. Then,
You are welcome to write your own functions for detecting humans and dogs in images, but feel free to use the face_detector
and dog_detector
functions developed above. You are required to use your CNN from Step 5 to predict dog breed.
Some sample output for our algorithm is provided below, but feel free to design your own user experience!
### TODO: Write your algorithm.
### Feel free to use as many code cells as needed.
files, targets = load_dataset('dogImages/train')
def display_image(path):
if path is None:
return
img = cv2.imread(path)
# convert BGR image to RGB for plotting
cv_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# display the image, along with bounding box
plt.imshow(cv_rgb)
plt.show()
def display_breed(breed):
if not breed:
return
display_image(next((x for x in files if breed in x), None))
def have_fun(image_path):
print("Input image: %s" % i)
display_image(image_path)
is_human = face_detector(image_path)
is_dog = dog_detector(image_path)
if is_human:
print("Looks like a homo sapiens")
breed = Xception_predict_breed(image_path)
print("... and you look like a %s" % breed)
### TODO: Write your algorithm.
### Feel free to use as many code cells as needed.
files, targets = load_dataset('dogImages/train')
def display_image(path):
if path is None:
return
img = cv2.imread(path)
# convert BGR image to RGB for plotting
cv_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# display the image, along with bounding box
plt.imshow(cv_rgb)
plt.show()
def display_breed(breed):
if not breed:
return
display_image(next((x for x in files if breed in x), None))
def have_fun(image_path):
print("Input image: %s" % i)
display_image(image_path)
is_human = face_detector(image_path)
is_dog = dog_detector(image_path)
if is_human:
print("Looks like a homo sapiens")
breed = Xception_predict_breed(image_path)
print("... and you look like a %s" % breed)
display_breed(breed)
elif is_dog:
print("bark...bark...")
breed = Xception_predict_breed(image_path)
print("Predectited breed: %s" % breed)
display_breed(breed)
else:
print("No human faces or dogs detected ¯\_(ツ)_/¯")
In this section, you will take your new algorithm for a spin! What kind of dog does the algorithm think that you look like? If you have a dog, does it predict your dog's breed accurately? If you have a cat, does it mistakenly think that your cat is a dog?
Test your algorithm at least six images on your computer. Feel free to use any images you like. Use at least two human and two dog images.
Question 6: Is the output better than you expected :) ? Or worse :( ? Provide at least three possible points of improvement for your algorithm.
Answer: Output meets my expectations. :) It clearly has entertaining and educational value. Possible points of improvement:
lfw/Zhang_Wenkang/Zhang_Wenkang_0001.jpg
, lfw/Zurab_Tsereteli/Zurab_Tsereteli_0001.jpg
and lfw/Claudia_Coslovich/Claudia_Coslovich_0001.jpg
resemble the same dog breed Petit_basset_griffon_vendeen. I suspect that it is due to image backgroud influencing breed prediction. Looks like extracting just human face from an image and feeding it to Xception_predict_breed can help mitigate such side effect.# TODO: Execute your algorithm from Step 6 on
## at least 6 images on your computer.
## Feel free to use as many code cells as needed.
import random
images = ["lfw/Zumrati_Juma/Zumrati_Juma_0001.jpg",
"lfw/Claudia_Coslovich/Claudia_Coslovich_0001.jpg",
"lfw/Yossi_Beilin/Yossi_Beilin_0002.jpg",
"dogImages/test/035.Boykin_spaniel/Boykin_spaniel_02497.jpg",
"lfw/Zurab_Tsereteli/Zurab_Tsereteli_0001.jpg",
"dogImages/test/029.Border_collie/Border_collie_02051.jpg",
"lfw/Zhang_Wenkang/Zhang_Wenkang_0001.jpg",
"dogImages/test/101.Maltese/Maltese_06766.jpg",
"dogImages/test/082.Havanese/Havanese_05585.jpg",
"lfw/Recep_Tayyip_Erdogan/Recep_Tayyip_Erdogan_0001.jpg",
"python.jpg"]
for i in images:
have_fun(i)
print("="*60)


-
For Removal Element Description br.com.armange.commons.thread.CaughtExecutorThreadFactory Consider to useExceptionCatcherThreadFactory
A thread-factory that sets some thread parameters if non-null:- Name
- Priority
- Uncaught exception handler
br.com.armange.commons.thread.ExecutorResult Consider to useExecutorResult
A bean that wrappes a thread result, composed by a ExecutorService, a Future list and another ExecutorResult list for timeouted threads.
The ExecutorResult list will be present when some thread has a timeout.
One Future will be present by each thread started.
Consider seeing the logical relationship betweenExecutorService
andFuture
in their respective documentation.br.com.armange.commons.thread.ScheduledCaughtExecutorService Consider to useScheduledThreadBuilderExecutor
AScheduledThreadPoolExecutor
that can additionally perform actions after thread has completed normally. Consider seeingjava.util.concurrent.ThreadPoolExecutor#afterExecute(Runnable, Throwable)
br.com.armange.commons.thread.ThreadBuilder Consider to useThreadBuilder
Useful structure for thread creation in the following scenarios:- Timeout
The thread will be active only until the timeout be fired.
- Delay
The thread will be active only after the time delay be completed.
- Interval
The thread will be repeated after the time interval be completed.
- Exception handling
Handles of uncaught exceptions can be thrown and handled within threads.
The thread will wait a minimum delay (ThreadBuilder.MINIMAL_REQUIRED_DELAY
) if and only if a (ThreadBuilder.setAfterExecuteConsumer(BiConsumer)
) or a (ThreadBuilder.setUncaughtExceptionConsumer(Consumer)
) is present.Example: final ExecutorService thread = ThreadBuilder .newBuilder() //New object to build a new thread. .setDelay(1000) //The thread will wait one second before start. .setTimeout(4000) //The thread will be canceled after four seconds. .setInterval(1000) //The thread will be repeated every second. .setAfterExecuteConsumer(afterExecuteConsumer) //A consumer will be called after thread execution. .setUncaughtExceptionConsumer(throwableConsumer) //A consumer will be called after any exception thrown. .setMayInterruptIfRunning(true) //The thread interruption/cancellation will not wait execution. .setSilentInterruption(true) //Interruption and Cancellation exceptions will not be thrown. .setExecution(anyRunnable) //The thread execution. .setThreadNameSupplier(() -> "Thread name") .setThreadPrioritySupplier(() -> 4) .start();
br.com.armange.commons.thread.ThreadUtil Consider to useThreadUtil
Useful structure for handling the current segment. Some methods that require handling a checked exception are rewritten in this class, however, throwing an unchecked exception.br.com.armange.commons.thread.UncheckedException Consider to useUncheckedException
Unchecked exceptions can be thrown instead of the RuntimeException option to release the handling of exceptions when they do not need to be handled.
-
Classes Class Description br.com.armange.commons.thread.CaughtExecutorThreadFactory Consider to useExceptionCatcherThreadFactory
A thread-factory that sets some thread parameters if non-null:- Name
- Priority
- Uncaught exception handler
br.com.armange.commons.thread.ExecutorResult Consider to useExecutorResult
A bean that wrappes a thread result, composed by a ExecutorService, a Future list and another ExecutorResult list for timeouted threads.
The ExecutorResult list will be present when some thread has a timeout.
One Future will be present by each thread started.
Consider seeing the logical relationship betweenExecutorService
andFuture
in their respective documentation.br.com.armange.commons.thread.ScheduledCaughtExecutorService Consider to useScheduledThreadBuilderExecutor
AScheduledThreadPoolExecutor
that can additionally perform actions after thread has completed normally. Consider seeingjava.util.concurrent.ThreadPoolExecutor#afterExecute(Runnable, Throwable)
br.com.armange.commons.thread.ThreadBuilder Consider to useThreadBuilder
Useful structure for thread creation in the following scenarios:- Timeout
The thread will be active only until the timeout be fired.
- Delay
The thread will be active only after the time delay be completed.
- Interval
The thread will be repeated after the time interval be completed.
- Exception handling
Handles of uncaught exceptions can be thrown and handled within threads.
The thread will wait a minimum delay (ThreadBuilder.MINIMAL_REQUIRED_DELAY
) if and only if a (ThreadBuilder.setAfterExecuteConsumer(BiConsumer)
) or a (ThreadBuilder.setUncaughtExceptionConsumer(Consumer)
) is present.Example: final ExecutorService thread = ThreadBuilder .newBuilder() //New object to build a new thread. .setDelay(1000) //The thread will wait one second before start. .setTimeout(4000) //The thread will be canceled after four seconds. .setInterval(1000) //The thread will be repeated every second. .setAfterExecuteConsumer(afterExecuteConsumer) //A consumer will be called after thread execution. .setUncaughtExceptionConsumer(throwableConsumer) //A consumer will be called after any exception thrown. .setMayInterruptIfRunning(true) //The thread interruption/cancellation will not wait execution. .setSilentInterruption(true) //Interruption and Cancellation exceptions will not be thrown. .setExecution(anyRunnable) //The thread execution. .setThreadNameSupplier(() -> "Thread name") .setThreadPrioritySupplier(() -> 4) .start();
br.com.armange.commons.thread.ThreadUtil Consider to useThreadUtil
Useful structure for handling the current segment. Some methods that require handling a checked exception are rewritten in this class, however, throwing an unchecked exception.
-
Exceptions Exceptions Description br.com.armange.commons.thread.UncheckedException Consider to useUncheckedException
Unchecked exceptions can be thrown instead of the RuntimeException option to release the handling of exceptions when they do not need to be handled.


|
123. The sum Time Limit: 0.2 sec, Memory Limit: 600 KB The Fibonacci sequence of numbers is known: F1 = 1; F2 = 1; Fn+1 = Fn + Fn-1, for n>1. You have to find S - the sum of the first K Fibonacci numbers. Input First line contains natural number K (0<K<41). Output First line should contain number S. Sample Input 5 Sample Output 12 | ||||||
|


{% extends 'dashboard/base.html' %} {% block title %}Payment Canceled{% endblock %} {% block section %}Payment Canceled{% endblock %} {% block content %}
There was a problem processing your payment. Head back to dashboard


Welcome to poolside FUN party!!
Welcome
food
Fun!!
Come! Join Us!
Date:Oct 1, 2021
Time:1pm
Location: ONLINE Swmming pool
Pick your favorite swimsuit and food!!


Mogan Academy / gad·line+ studio
- Curated by 韩爽 - HAN Shuang
- about 15 hours
Community Center · Huzhou, China
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Lei Sun, Jianzhi-Arch, ingallery, Kai Zhou
- Cheif Architect Fanhao Meng
- Design Team Fanhao Meng, Tao Tao, Chao Zhou, Shu Xing, Yuncheng Wan, Zhen Fan
- Structure, mechanical and electrical design Greentown Architectural Design
- Interior Design Xin Jin, Ning Zhang, Lijie Wang, Jiaqi Zhao, Jinwei Hu
- Structural Design Guangyong Ren, Zhegang Lu
- Electromechanical Design Daliang Cui, Yuanyuan Fang, Jinhan Chen, Hao Liu, Xiang Li
- Landscape Design Shangyang Li, Jianbo Jin, Xiaomei Chi, Chenjuan Su
- Client SUNAC
More Specs Less Specs
Text description provided by the architects. The project is located in the eastern foot of Mogan, Deqing City, and is born between five original valleys. The site retains the existing farmland texture and the long valley view corridor, which is characterized by the original rice field hometown, and creates the field flavor of crisscross paths in the valleys. This is also the location of agricultural museum, which is a window to enrich and integrate the historical and cultural connotation of farming.
Yuanye · Mogan bookstore is located in the green mountains and fields, with less urban hustle and bustle and more natural resources. Facing the unique natural resources of the site, line+ puts forward that, first, it matches the quality requirements of modern life, without losing the comfortable living experience and high-quality completion of the city, second, it is compatible with the local environment to create a rural living experience.
Facing the demands, the design is based on the concept of creating a modern high-quality rural life with natural life as the scenery and primitive culture as the heart. Traditional rural and modern interpretation, rough and rustic rammed earth materials and delicate and exquisite curtain wall structure, line+ hopes that through the integration of the two, this building will become a mixture of urban life and rural experience, and explore another possibility of urban feeding the countryside. The project consists of a 140 ㎡ book bar and 7 guest rooms.
The working mode of integration of architecture, interior and landscape also runs through the whole project. The design ideas and professional knowledge permeate each other and build a common ideal with the same design concept and continuous design language. Finally, the strong sense of integrity and integrity of the whole building makes us firmly believe in adopting this working mode.
The Library Bar: the Overhanging Roof
The library bar provides cultural space and public social places for rural life. Two key words of design:
1. Open the corner space. Let the internal and external space completely blend, and also have the best vision towards farmland.
2. Thick plate folding roof. The whole thick plate structure is adopted to realize the large space without beam, so as to ensure the freedom and purity of the space.
In order to match the structural space of corner opening, the world's most professional folding door manufacturers are carefully selected to provide L-shaped folding exterior door system that meets all design elements, realizing the visual effect of corner without column and large division.
The interior space of the bookstore reinforces the concept of “cantilevered roof” expressed by the architecture and structure. The entrance, the book bar and the bathroom exist as a textured background, and all the activity space and visual focus are “pushed” to the “L-shaped” corner of the building. Functional versatility and flexible division are taken into account in home layout and space separation.
In the use of material, a large number of wood grain finishes are used for the “background” part to increase affinity and integrity. Metal rods, vacuum slabs, acrylic tubes and other materials with exquisite texture and strong contrast are adopted for interior space and outdoor extensions, to add visual effects and create the center of space. The wood grain of the roof is consistent with the direction of the structure, and the wood floor on the ground is highly unified with the color of the outdoor bamboo floor, thus naturally blending the architecture, the interior and the landscape.
Guest Room: A New Experience of Exquisite Countryside
According to the terrain, the guest rooms are open to the farmland and mountain forest with the largest landscape, and the low-rise small-scale building volume is selected to restore the rural style.
Traditional double slope roof is selected for the single building roof of guest room, but modern materials and techniques are adopted for interpretation. The joint of roof tile and cornice adopts metal closure, which improves the delicacy of design, reduces various tile roof decoration accessories and reduces cost.
The main tone of wall materials is plain rammed earth, rubble, bamboo and wood wall panels, emphasizing the sense of growth and the locality of the building. The mature aluminum alloy door and window system is adopted in the door and window part, and the detailed nodes such as metal profile closing are added at the junction part, in order to create a rustic but exquisite new rural aesthetic.
The interior space of the guest room still reinforces the overall architectural concept. In terms of space, the activity space (living room and activity space) is pushed to the balcony area to expand the activity scope of guests, so as to better enjoy the outdoor landscape and the life experience different from that of the city. The bedroom area is moved back to the stable area to form two parts with the bathroom that can be divided or combined, which are independent of each other without interference.
At the same time, some of the material and texture of the exterior of the building is retained to extend inward. The rammed earth texture coating of the exterior wall is treated and applied to the facade decoration, reflecting the special charm different from that of the city hotel.
Landscape: Re-creation of the Natural Site
Landscape design also hopes to build a new channel of communication between human and nature. Starting from the nature of the site, it integrates ecology, space and farming culture, integrates geometric forms into ecological thinking, and displays the unique rural characteristics of the site.
In the form of steps from southeast to northwest and down the hillside, the mountain terrain is combed, the level and edge are considered, multiple directions are added, and space collision is intensified. The upper layer is an inward gathering space, encouraging mutual communication, and the lower layer is an open space, enjoying the rice field scenery, thus providing a variety of dynamic experiences on the one-way hillside.
The body structure modifies the original slope of the hillside, the mountain body is stabilized with the multi-step retaining wall, at the bottom of which the drainage channel is set to guide the surface runoff, and the permeability is enhanced for the surface covered with vegetation to protect the local ecological environment.
The abundant spatial volume provides a structure that is consistent with the local planting pattern, rotating between perennial herbs and local cash crops to cultivate the soil for the sustainable farming and potential agriculture development. The introduced plants have optimized meaning for the site environment. Tall Stipa tenuissima, Pennisetum and Cortaderia argente are planted in patches. The border is dotted with plants such as speedwell, trachelospermum jasminoide, Astilbe chinensis so as to consolidate the soil and protect the slope, purify the water quality, and form a simple and comfortable spatial sequence.
For the round pool paved with lake stones in front of the bookstore, the flying bird sculpture naturally dynamic in the rice field, and the stone wall piled with unique grid structures, we take the local scene and materials, integrate modern aesthetics and design techniques. It is a recreation of the natural site, and is also an effort to express nature in the most intuitive language.
Remarks
The "countryside" we mentioned is not only the countryside in the" nostalgia ". It is not only a memory of the past, but also a production site full of opportunities and patterns, a continuation and change of cultural interweaving and blending, and a new vitality brought by the upgrading of technology industry.
In this design, line+ rejects the retro and nostalgia at the style level. We use contemporary building materials, construction methods and construction details to reflect the spirit of the times and the delicacy of modern structures. Nature and city, past and future, "village" and "international" are blending and complementing and growing in parallel.


{% extends "base.html" %} {% block title %}JeffPD{% endblock %} {% block page_content %}
Hey {% if current_user.is_authenticated() %}{{ current_user.first_name }}{% else %}Stranger{% endif %}.
Let's talk about uploading Microsoft Office Word Documents, Excel Spreadsheets, and PowerPoint presentations. These files can all be uploaded to Google Drive.
For the purposes of keeping this tutorial brief, we'll only talk about how to convert a Microsoft Word document into a Goodle Doc. But, the process I'll show you is the same whether you're working with a document, spreadsheet, or presentation.
Checkout my video below to learn how to upload a Google Doc into Google Drive.
If you've ever had trouble with formatting when uploading a file from Microsoft Office, then this is the tutorial for you!
Watch the following video to learn more about how to maintain your correct document formatting when uploading a Microsoft Office document into Google Drive.
This video will also show you how to properly convert a Word document (or any Office file) into a Google Doc.


Mahak Makharia
DSC IEM Lead
Developer Student Clubs are university based community groups for students interested in Google developer technologies. Students from all undergraduate or graduate programs with an interest in growing as a developer are welcome. By joining a DSC, students grow their knowledge in a peer-to-peer learning environment and build solutions for local businesses and their community. We are extremely delighted to announce and welcome all of you to the first edition of Developer Student Club, IEM. DSC-IEM conducts workshops and events related to mobile and web technologies. The club aims to provide a common platform for all the developers on-campus to come together, collaborate and learn. Google collaborates with university students who are passionate about growing developer communities and supports them with starting student clubs on their campuses. Google Developers supports and recognizes DSCs.
Grow your knowledge on developer technologies and more through peer to peer workshops and events.
Gain relevant industry experience by solving problems for local organizations with technology-based solutions .
Showcase their prototypes and solutions to their local community and industry leaders
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Mentor UsGoogle collaborates with university students who are passionate about growing developer communities and supports them with starting student clubs on their campuses. These DSCs provide students with the opportunity to:


Well planned information architecture.
Building mobile optimized websites.
Contrasting colour scheme and quality photography.
You have to make your websites with love these days!


GenAMap organizes data in cloud-based projects for easy data handling.
GenAMap uses parallelization for easy scaling to human-scale data.
GenAMap makes it easy to explore large association studies.
Principal Investigator
Visualization Lead
Machine Learning Lead
Computational Biology Lead
Team Members: Joey Gibli, Clarence Ngoh, Danielle Hu, Jingkang Yang, Hilary Lai.
Former Members: Ross Curtis, Dylan Steele, Bryan Yan, Aditya Gautam, Liuyu Jin, Beilin Li.


Pat and his family were an unassuming family of Seattlites (not satellites) living over in Queen Anne at the start of this decade. Pat was a front-end web developer, churning out index pages and replacing lorem ipsum text with actual content for days on end. Pat's spouse was a baker who worked down at the waterfront, creating treats and delicacies for both citizens of the city and tourists alike. Their daughter, Dorothy, attended school over in Fremont and had several friends, none of who were consequential enough to actually make it into this description outside of this oblique sentence. And who could forget their son, JIMBO, DESTROYER OF WORLDS, who terrorized the populace with his grim stare and was single-handedly responsible for the Denny regrade? All and all, it was a relatively idyllic life - unfortunately, fate conspired to change all this.
One fateful morning, Pat and Pat's spouse were on their way to work when JIMBO decided to summon a massive swarm of salmon over this city. As expected, the weight of the falling fish destroyed many buildings, including Pat's house, his workplace, and most of the bakery Pat's spouse worked at. Distraught at the loss of his employment and his home, Pat howled at the sky for some recompense. Just as if a benevolent power had been looking over Pat, an idea struck: Pat could survive by creating salmon cookies! No, not salmon colored cookies, but cookies made from ground salmon! Pat commandered what remained of the spouse's bakery and what useful bits of the salmon pile that were left after JIMBO's wrath, and the rest is history.
| Location | Hours Open | Description |
|---|---|---|
| 1st And Pike | 6AM - 9PM | The origin of salmon cookies, this location is still one of Pat's most popular stores today. Rebuilt from the original catastrophe, the 1st and Pike location is sure to have fresh salmon for the cookies every day, regardless of the season. Expect further fish-based baked goods from here soon! |
| SeaTac Airport | 6AM - 9PM | The second of Pat's salmon cookie stores, the airport location is not the most visited store, but its adjacency to domestic and internation flights are sure to spread the brand across the nation and the world. Note: federal law prohibits visitors from taking the salmon cookies on outbound flights, so be sure to enjoy before you catch your flight! |
| Seattle Center | 6AM - 9PM | Located at 3rd and Denny, this location shares a building with several businesses around the area. Whether you're a tourist visiting the Space Needle nearby or a member of one of the corporations in the shared building, you'll be sure to love these cookies! |
| Capitol Hill | 6AM - 9PM | Nestled between the light rail station and Seattle Central College, this location attracts both college students and commuters alike. Whether you're coming home from a late night at one of the breweries nearby, just leaving an afternoon class, or are about to walk down to downtown Seattle, be sure to pick up a dozen cookies for the road! |
| Alki | 6AM - 9PM | We're not actually sure that this location is ever open. Cookies come in, money comes out, but there don't seem to be any customers or employees here. In fact, was this building even here a couple months ago? Come visit and find out the answer to these and other mysteries! |
| Your Store Here? | ??? - ??? | Pat is looking for future investors and franchisers to open more salmon cookie locations across the city and eventually across the nation. Whether you've completely fallen and love with these cookies and want to spread your joy or you wish to placate the angry god that is JIMBO, contact Pat at [information redacted] for pricing information or other concerns. |


You can edit/preview/convert Markdown.
Type or paste Markdown text in the Editor field. It will be previewed and converted into HTML in real time.


acl acl2012 acl2012-lda knowledge-graph by maker-knowledge-mining
topicId: wordWeight*wordName (topN-words)
topic #0: 0.004*subjectivity + 0.002*wiebe + 0.002*banea + 0.002*orientation + 0.002*answer + 0.002*unt + 0.002*janyce + 0.002*yahoo + 0.002*denton + 0.001*sentiments
topic #1: 0.004*wref + 0.002*cref + 0.002*wcand + 0.001*umbrella + 0.001*tesla + 0.001*ccand + 0.001*buy + 0.001*teslacelab + 0.001*schirm + 0.001*cilin
topic #2: 0.003*books + 0.003*ngrams + 0.002*burnt + 0.002*ngram + 0.001*hair + 0.001*edition + 0.001*book + 0.001*burned + 0.001*ppcmbe + 0.001*michel
topic #3: 0.002*td + 0.002*iwill + 0.002*kernel + 0.002*formalism + 0.002*mellon + 0.002*carnegie + 0.002*srk + 0.002*double + 0.001*doubles + 0.001*kk
topic #4: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #5: 0.003*lm + 0.001*crawl + 0.001*fastest + 0.001*delaney + 0.001*histogram + 0.001*expansions + 0.001*trie + 0.001*computations + 0.001*lookups + 0.001*aclhl
topic #6: 0.004*comma + 0.003*msa + 0.003*cea + 0.003*discourse + 0.002*commas + 0.002*colloquial + 0.001*ip + 0.001*coord + 0.001*egyptian + 0.001*dialectal
topic #7: 0.004*vp + 0.004*constituent + 0.003*eisenstein + 0.002*fossum + 0.002*slav + 0.002*eugene + 0.002*columns + 0.002*charniak + 0.002*pereira + 0.002*sports
topic #8: 0.003*wsd + 0.003*refinements + 0.003*zj + 0.002*refinement + 0.002*loss + 0.001*stf + 0.001*serious + 0.001*stemprf + 0.001*multiclass + 0.001*recipe
topic #9: 0.002*mer + 0.001*wedding + 0.001*cousin + 0.001*attend + 0.001*nji + 0.001*unl + 0.001*engzh + 0.001*ud + 0.001*fff + 0.001*ngj
topic #10: 0.003*anglicisms + 0.003*hip + 0.003*hop + 0.002*mzee + 0.001*german + 0.001*covo + 0.001*dissemination + 0.001*anglicism + 0.001*altmann + 0.001*fate
topic #11: 0.001*election + 0.001*presidential + 0.001*dashboard + 0.001*republican + 0.001*political + 0.001*traffic + 0.001*neutral + 0.001*twitter + 0.001*sarcastic + 0.001*choy
topic #12: 0.002*drafts + 0.002*symbol + 0.002*comment + 0.002*essay + 0.001*tsg + 0.001*revision + 0.001*backoff + 0.001*comments + 0.001*elementary + 0.001*draft
topic #13: 0.004*cftg + 0.004*polarity + 0.003*polarities + 0.003*productions + 0.002*synsets + 0.002*joshi + 0.002*ppm + 0.002*borders + 0.002*formula + 0.001*schabes
topic #14: 0.003*conjunctions + 0.003*spotting + 0.002*dice + 0.002*prepositions + 0.002*spotted + 0.002*factorization + 0.002*equivalents + 0.002*concordancer + 0.002*sibling + 0.001*spot
topic #15: 0.006*aspect + 0.005*ccm + 0.004*qg + 0.002*treebanks + 0.002*llccm + 0.002*treebank + 0.002*yessenalina + 0.001*cdt + 0.001*wenliang + 0.001*pol
topic #16: 0.003*assessor + 0.003*assessors + 0.002*pyramid + 0.002*affinity + 0.002*governor + 0.002*configurations + 0.001*configuration + 0.001*affinities + 0.001*gh + 0.001*classy
topic #17: 0.004*dadt + 0.004*rejuvenation + 0.003*particle + 0.002*verbnet + 0.002*igngf + 0.002*authorship + 0.001*orschinger + 0.001*thematic + 0.001*batch + 0.001*lamirel
topic #18: 0.003*wmfvec + 0.003*elesk + 0.002*jcn + 0.001*wmf + 0.001*ldavec + 0.001*sinha + 0.001*relatedness + 0.001*diab + 0.001*neighbor + 0.000*nuanced
topic #19: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #20: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #21: 0.002*seeds + 0.001*staff + 0.001*pillow + 0.001*cleanliness + 0.000*nonseeded + 0.000*flavor + 0.000*mcauliffe + 0.000*suit + 0.000*categorizations + 0.000*correlating
topic #22: 0.003*readability + 0.003*aesop + 0.002*stk + 0.002*ptk + 0.002*rerankers + 0.002*responsiveness + 0.002*mcat + 0.001*tesla + 0.001*sk + 0.001*dicomer
topic #23: 0.004*tuples + 0.003*theorem + 0.002*spectral + 0.002*seminar + 0.002*tensor + 0.002*rn + 0.002*tuple + 0.002*ga + 0.001*unification + 0.001*rm
topic #24: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #25: 0.006*parallel + 0.005*annotation + 0.004*pt + 0.004*resources + 0.003*comparable + 0.003*mapping + 0.003*lsa + 0.003*nouns + 0.003*dictionaries + 0.003*dan
topic #26: 0.006*feature + 0.006*association + 0.005*translations + 0.005*wikipedia + 0.005*named + 0.004*web + 0.004*string + 0.004*term + 0.004*mining + 0.004*computational
topic #27: 0.002*imam + 0.002*cocc + 0.002*cdl + 0.001*clusterings + 0.001*views + 0.001*disagreement + 0.001*cdw + 0.001*fd + 0.001*blum + 0.001*dhillon
topic #28: 0.010*chinese + 0.009*translation + 0.006*alignment + 0.006*languages + 0.006*character + 0.005*distribution + 0.005*characters + 0.004*bilingual + 0.004*corpus + 0.004*span
topic #29: 0.003*viterbi + 0.003*deceptive + 0.002*deception + 0.002*yt + 0.002*ott + 0.002*iterative + 0.002*degenerate + 0.001*lb + 0.001*tripadvisor + 0.001*truthful
topic #30: 0.008*reordering + 0.008*rule + 0.006*node + 0.006*trees + 0.005*review + 0.004*treebank + 0.004*ranking + 0.004*agreement + 0.004*children + 0.004*de
topic #31: 0.003*articulatory + 0.003*pronunciation + 0.003*reconcile + 0.002*coreference + 0.002*headwords + 0.002*pronunciations + 0.002*stoyanov + 0.002*headword + 0.001*president + 0.001*anaphor
topic #32: 0.003*thrax + 0.002*csniper + 0.002*nccs + 0.002*expr + 0.002*libraries + 0.002*ncc + 0.001*opengrm + 0.001*wfst + 0.001*bnc + 0.001*assessment
topic #33: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #34: 0.004*langid + 0.004*humor + 0.004*hittite + 0.002*cuneiform + 0.002*script + 0.002*anchoring + 0.001*humorous + 0.001*ideograms + 0.001*activation + 0.001*conceptnet
topic #35: 0.003*mix + 0.002*uv + 0.001*mildly + 0.001*bach + 0.001*substring + 0.001*wrapping + 0.001*weir + 0.001*salvati + 0.001*emmon + 0.001*useless
topic #36: 0.003*particles + 0.003*adaptor + 0.002*utterance + 0.002*cue + 0.002*conversation + 0.002*cues + 0.002*social + 0.002*shift + 0.002*sits + 0.001*particle
topic #37: 0.009*parser + 0.008*semantic + 0.007*algorithm + 0.006*argument + 0.006*accuracy + 0.005*graph + 0.005*kernels + 0.005*predicate + 0.005*gold + 0.005*vector
topic #38: 0.003*precondition + 0.003*macedonian + 0.003*planning + 0.002*planner + 0.002*bulgarian + 0.002*subgoal + 0.002*bg + 0.001*preconditions + 0.001*subgoals + 0.001*mk
topic #39: 0.011*sentiment + 0.007*rules + 0.006*relations + 0.004*social + 0.004*opinion + 0.004*wordnet + 0.003*detection + 0.003*precision + 0.003*sampling + 0.003*news
topic #40: 0.003*reorderings + 0.002*distortion + 0.002*shop + 0.002*permutations + 0.001*edg + 0.001*treebanking + 0.001*mrss + 0.001*clo + 0.001*disambiguated + 0.001*bisazza
topic #41: 0.003*dialog + 0.002*slot + 0.002*act + 0.002*utterances + 0.001*utterance + 0.001*wuj + 0.001*slu + 0.001*slots + 0.001*sujd + 0.001*mcm
topic #42: 0.003*segtag + 0.002*segtagdep + 0.002*hatori + 0.002*sh + 0.001*dep + 0.001*actions + 0.001*tagdep + 0.001*snt + 0.001*shifted + 0.001*peace
topic #43: 0.004*mr + 0.002*sas + 0.002*transducers + 0.002*transducer + 0.002*nl + 0.001*seeded + 0.001*sentiments + 0.001*linens + 0.001*population + 0.001*maine
topic #44: 0.005*compression + 0.003*typological + 0.002*dependents + 0.002*compressions + 0.001*compressed + 0.001*naseem + 0.001*unordered + 0.001*spontaneous + 0.001*bio + 0.001*pauses
topic #45: 0.005*scf + 0.003*wsr + 0.003*wsa + 0.001*subcategorization + 0.001*korhonen + 0.001*scfs + 0.001*timeuserlda + 0.001*arafat + 0.001*tgrs + 0.001*grs
topic #46: 0.001*crowd + 0.001*clueweb + 0.001*birthp + 0.000*springfield + 0.000*distantsupervision + 0.000*protocols + 0.000*distantly + 0.000*thain + 0.000*answered + 0.000*tens
topic #47: 0.003*cp + 0.003*descending + 0.002*unige + 0.002*cube + 0.001*pruning + 0.001*henderson + 0.001*bet + 0.001*gesmundo + 0.001*geneva + 0.001*smundo
topic #48: 0.006*paraphrase + 0.004*alessandro + 0.004*paraphrasing + 0.003*paraphrases + 0.003*moschitti + 0.003*adequacy + 0.003*writers + 0.002*flow + 0.002*pivot + 0.002*kernels
topic #49: 0.005*beam + 0.003*biutee + 0.003*triples + 0.003*discourse + 0.002*rte + 0.002*incremental + 0.002*bkb + 0.002*stack + 0.002*deterministic + 0.002*linguistically
topic #50: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #51: 0.005*discourse + 0.002*hilda + 0.002*hernault + 0.001*sl + 0.001*rst + 0.001*edus + 0.001*rhetorical + 0.001*mafs + 0.000*toronto + 0.000*textlevel
topic #52: 0.004*reformulation + 0.003*hpb + 0.003*year + 0.003*reformulations + 0.003*adf + 0.003*timestamp + 0.003*sgd + 0.002*nrrs + 0.002*ww + 0.002*glue
topic #53: 0.004*image + 0.003*images + 0.002*ilp + 0.002*cohesion + 0.002*chunk + 0.002*captions + 0.002*subphrases + 0.002*filed + 0.001*chunks + 0.001*nonterminals
topic #54: 0.004*ssl + 0.002*subramanya + 0.001*talukdar + 0.001*attendee + 0.001*amarnag + 0.001*exciting + 0.001*pratim + 0.001*partha + 0.001*familiarity + 0.001*stars
topic #55: 0.003*segmenter + 0.003*msa + 0.003*ads + 0.002*adwords + 0.002*levantine + 0.002*shards + 0.002*segmenters + 0.001*medieval + 0.001*mm + 0.001*persuasive
topic #56: 0.003*embeddings + 0.003*child + 0.002*developmental + 0.002*mlu + 0.001*age + 0.001*reisinger + 0.001*childes + 0.001*ages + 0.001*collobert + 0.001*orderings
topic #57: 0.008*arabic + 0.005*decoder + 0.005*moses + 0.004*toolkit + 0.003*chris + 0.003*sme + 0.003*pruning + 0.003*mi + 0.003*stems + 0.003*suspicion
topic #58: 0.005*tig + 0.003*wtmf + 0.003*missing + 0.002*definitions + 0.002*wm + 0.002*wn + 0.001*auxiliary + 0.001*adjunction + 0.001*xij + 0.001*ss
topic #59: 0.006*tutorial + 0.005*vectors + 0.004*neural + 0.004*instructions + 0.004*instruction + 0.004*manning + 0.003*deep + 0.003*larger + 0.003*em + 0.003*virtual
topic #60: 0.004*paraphrase + 0.004*dates + 0.002*chronologies + 0.002*paraphrases + 0.001*pear + 0.001*salient + 0.001*friday + 0.001*afp + 0.001*handbag + 0.001*semiring
topic #61: 0.002*treelet + 0.001*nps + 0.001*bllip + 0.001*selective + 0.001*slr + 0.001*productions + 0.001*treelets + 0.001*flattening + 0.001*cii + 0.001*vps
topic #62: 0.005*pareto + 0.003*heterogeneous + 0.003*ppd + 0.002*stacking + 0.002*ctb + 0.002*pmo + 0.001*ribes + 0.001*frontier + 0.001*ctagppd + 0.001*devset
topic #63: 0.006*plagiarism + 0.001*suspicious + 0.000*stopword + 0.000*plagiarists + 0.000*winning + 0.000*auc + 0.000*braumoeller + 0.000*potthast + 0.000*rensena + 0.000*zou
topic #64: 0.002*worksforclub + 0.002*sensitivity + 0.002*cleaning + 0.001*beckham + 0.001*xr + 0.001*zf + 0.001*ilp + 0.001*mani + 0.001*gerhard + 0.001*talukdar
topic #65: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #66: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #67: 0.003*visual + 0.003*color + 0.002*vision + 0.002*nonliteral + 0.001*sift + 0.001*multimodal + 0.001*men + 0.001*literal + 0.001*bovw + 0.001*descriptor
topic #68: 0.002*bagging + 0.002*syntagmatic + 0.002*paradigmatic + 0.001*antho + 0.001*ogy + 0.001*aclweb + 0.001*lweb + 0.001*wc + 0.000*oov + 0.000*mkcls
topic #69: 0.004*emotion + 0.004*keystroke + 0.003*ambient + 0.003*simplification + 0.002*revilp + 0.002*illume + 0.002*lighting + 0.002*emotions + 0.001*uncorrected + 0.001*emotional
topic #70: 0.005*consensus + 0.004*mnb + 0.002*nb + 0.002*nbsvm + 0.001*svm + 0.001*nakagawa + 0.001*alexandrescu + 0.001*naive + 0.001*bnb + 0.001*mpqa
topic #71: 0.006*parsers + 0.005*mcdonald + 0.004*nivre + 0.004*hpsg + 0.003*constituent + 0.003*parsing + 0.003*koo + 0.003*head + 0.003*parser + 0.003*dependency
topic #72: 0.003*acoustic + 0.002*timit + 0.001*phone + 0.001*phones + 0.001*bt + 0.001*gaussian + 0.001*gmm + 0.001*xti + 0.001*glass + 0.001*eer
topic #73: 0.005*port + 0.004*coreference + 0.001*compatibility + 0.001*mh + 0.001*rj + 0.001*qmean + 0.001*mj + 0.001*meteor + 0.001*proposals + 0.001*culotta
topic #74: 0.011*bleu + 0.008*phrase + 0.007*error + 0.006*verb + 0.006*errors + 0.006*discriminative + 0.006*lexicon + 0.005*score + 0.005*context + 0.005*local
topic #75: 0.005*chat + 0.002*personalized + 0.001*asiaspik + 0.001*bot + 0.001*abbreviations + 0.001*client + 0.001*malay + 0.001*cook + 0.001*server + 0.001*choudhury
topic #76: 0.008*bursty + 0.003*burstvsm + 0.002*burst + 0.002*dlm + 0.001*xh + 0.001*intersect + 0.001*boostvsm + 0.001*pu + 0.001*tvburst + 0.001*dh
topic #77: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #78: 0.003*vbe + 0.003*unsupervized + 0.002*branching + 0.001*supervized + 0.001*jin + 0.001*harris + 0.001*vbes + 0.001*nvbe + 0.001*separation + 0.001*pku
topic #79: 0.004*motion + 0.004*spatial + 0.003*curve + 0.002*anchor + 0.002*curves + 0.002*qualitative + 0.002*families + 0.002*verbal + 0.001*family + 0.001*calculi
topic #80: 0.003*epoch + 0.003*epochs + 0.001*monosemous + 0.001*polysemous + 0.001*dinner + 0.001*surgeon + 0.001*wed + 0.001*century + 0.000*plastic + 0.000*photography
topic #81: 0.003*clmm + 0.003*intents + 0.002*cws + 0.002*deterministic + 0.002*wt + 0.002*intent + 0.002*ws + 0.002*morph + 0.002*constraints + 0.002*cj
topic #82: 0.011*temporal + 0.007*parsing + 0.007*events + 0.006*attitude + 0.005*projection + 0.005*huang + 0.005*head + 0.004*dataset + 0.004*discussant + 0.004*texts
topic #83: 0.002*atb + 0.001*gender + 0.001*feminine + 0.001*fem + 0.001*musicmatch + 0.001*masculine + 0.001*agreement + 0.000*habash + 0.000*popat + 0.000*avg
topic #84: 0.010*segmentation + 0.005*morphological + 0.004*chen + 0.004*learning + 0.003*original + 0.003*key + 0.003*meaning + 0.003*mooney + 0.003*mentioned + 0.003*date
topic #85: 0.007*english + 0.006*mt + 0.006*similarity + 0.006*lexical + 0.005*metrics + 0.005*entailment + 0.005*input + 0.005*multilingual + 0.004*documents + 0.004*japanese
topic #86: 0.005*fst + 0.003*clte + 0.003*foreign + 0.003*transcription + 0.002*asr + 0.002*mehdad + 0.002*archive + 0.002*dr + 0.002*bulgarian + 0.002*spt
topic #87: 0.003*tnf + 0.002*uwn + 0.002*melo + 0.001*vred + 0.001*ilp + 0.001*gred + 0.001*weikum + 0.001*gerhard + 0.001*xij + 0.001*framenet
topic #88: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #89: 0.005*transliteration + 0.004*lemmatisation + 0.004*nen + 0.002*ymi + 0.001*labelled + 0.001*lcs + 0.001*tim + 0.001*gaga + 0.001*unlabelled + 0.001*sajjad
topic #90: 0.006*translation + 0.006*pages + 0.005*dependency + 0.005*pos + 0.005*tagging + 0.005*target + 0.005*sentence + 0.004*event + 0.004*decoding + 0.004*query
topic #91: 0.003*tokenization + 0.003*implicit + 0.003*discourse + 0.003*pdtb + 0.002*connective + 0.002*attitudes + 0.002*connectives + 0.002*repp + 0.002*ptb + 0.002*explicit
topic #92: 0.012*topic + 0.008*tree + 0.006*topics + 0.006*user + 0.006*tweets + 0.006*document + 0.005*latent + 0.005*sense + 0.005*parse + 0.005*clustering
topic #93: 0.005*letsmt + 0.004*vb + 0.003*variational + 0.001*hpc + 0.001*aer + 0.001*storage + 0.001*layer + 0.001*import + 0.001*rr + 0.001*productivity
topic #94: 0.007*smt + 0.006*hierarchical + 0.005*chiang + 0.005*size + 0.004*translation + 0.004*constraints + 0.004*hmm + 0.004*entries + 0.003*giza + 0.003*sr
topic #95: 0.004*tf + 0.001*neubig + 0.001*htmm + 0.001*substring + 0.001*itg + 0.001*adapbp + 0.001*pword + 0.001*pcooc + 0.001*meteor + 0.001*finnish
topic #96: 0.003*nissim + 0.002*hoffmann + 0.002*anaphora + 0.002*rahman + 0.002*bridging + 0.002*mediated + 0.002*weld + 0.001*collective + 0.001*intertext + 0.001*old
topic #97: 0.000*vatanen + 0.000*bond + 0.000*dahlmeire + 0.000*corenlp + 0.000*conflicts + 0.000*compensate + 0.000*compatible + 0.000*closely + 0.000*clc + 0.000*certificate
topic #98: 0.004*navigation + 0.003*synthesis + 0.003*quickview + 0.003*utterance + 0.002*verbnet + 0.002*sptk + 0.002*incremental + 0.002*obj + 0.001*ongoing + 0.001*server
topic #99: 0.008*relation + 0.005*entities + 0.005*extraction + 0.005*entity + 0.004*labeled + 0.004*arguments + 0.004*disambiguation + 0.004*np + 0.004*ccg + 0.004*distant
Latent Dirichlet allocation
In natural language processing, latent Dirichlet allocation (LDA) is a generative model that allows sets of observations to be explained by unobserved groups that explain why some parts of the data are similar. For example, if observations are words collected into documents, it posits that each document is a mixture of a small number of topics and that each word's creation is attributable to one of the document's topics. LDA is an example of a topic model and was first presented as a graphical model for topic discovery by David Blei, Andrew Ng, and Michael Jordan in 2003.
Topics in LDA
In LDA, each document may be viewed as a mixture of various topics. This is similar to probabilistic latent semantic analysis (pLSA), except that in LDA the topic distribution is assumed to have a Dirichlet prior. In practice, this results in more reasonable mixtures of topics in a document. It has been noted, however, that the pLSA model is equivalent to the LDA model under a uniform Dirichlet prior distribution.
For example, an LDA model might have topics that can be classified as CAT_related and DOG_related. A topic has probabilities of generating various words, such as milk, meow, and kitten, which can be classified and interpreted by the viewer as "CAT_related". Naturally, the word cat itself will have high probability given this topic. The DOG_related topic likewise has probabilities of generating each word: puppy, bark, and bone might have high probability. Words without special relevance, such as the (see function word), will have roughly even probability between classes (or can be placed into a separate category). A topic is not strongly defined, neither semantically nor epistemologically. It is identified on the basis of supervised labeling and (manual) pruning on the basis of their likelihood of co-occurrence. A lexical word may occur in several topics with a different probability, however, with a different typical set of neighboring words in each topic.
Each document is assumed to be characterized by a particular set of topics. This is akin to the standard bag of words model assumption, and makes the individual words exchangeable.
Model
With plate notation, the dependencies among the many variables can be captured concisely. The boxes are “plates” representing replicates. The outer plate represents documents, while the inner plate represents the repeated choice of topics and words within a document. M denotes the number of documents, N the number of words in a document. Thus:
α is the parameter of the Dirichlet prior on the per-document topic distributions,
β is the parameter of the Dirichlet prior on the per-topic word distribution,
\theta_i is the topic distribution for document i,
\phi_k is the word distribution for topic k,
z_{ij} is the topic for the jth word in document i, and
w_{ij} is the specific word.
The w_{ij} are the only observable variables, and the other variables are latent variables. Mostly, the basic LDA model will be extended to a smoothed version to gain better results .[citation needed] The plate notation is shown on the right, where K denotes the number of topics considered in the model and:
\phi is a K*V (V is the dimension of the vocabulary) Markov matrix each row of which denotes the word distribution of a topic.
The generative process behind is that documents are represented as random mixtures over latent topics, where each topic is characterized by a distribution over words. LDA assumes the following generative process for a corpus D consisting of M documents each of length N_i:
1. Choose \theta_i \, \sim \, \mathrm{Dir}(\alpha) , where i \in \{ 1,\dots,M \} and \mathrm{Dir}(\alpha) is the Dirichlet distribution for parameter \alpha
2. Choose \phi_k \, \sim \, \mathrm{Dir}(\beta) , where k \in \{ 1,\dots,K \}
3. For each of the word positions i, j, where j \in \{ 1,\dots,N_i \} , and i \in \{ 1,\dots,M \}
(a) Choose a topic z_{i,j} \,\sim\, \mathrm{Multinomial}(\theta_i).
(b) Choose a word w_{i,j} \,\sim\, \mathrm{Multinomial}( \phi_{z_{i,j}}) .
(Note that the Multinomial distribution here refers to the Multinomial with only one trial. It is formally equivalent to the categorical distribution.)
The lengths N_i are treated as independent of all the other data generating variables (q and z). The subscript is often dropped, as in the plate diagrams shown here.
Inference
Learning the various distributions (the set of topics, their associated word probabilities, the topic of each word, and the particular topic mixture of each document) is a problem of Bayesian inference. The original paper used a variational Bayes approximation of the posterior distribution;[1] alternative inference techniques use Gibbs sampling and expectation propagation.
Following is the derivation of the equations for collapsed Gibbs sampling, which means \varphis and \thetas will be integrated out. For simplicity, in this derivation the documents are all assumed to have the same length N_{}. The derivation is equally valid if the document lengths vary.
Applications, extensions and similar techniques
Topic modeling is a classic problem in information retrieval. Related models and techniques are, among others, latent semantic indexing, independent component analysis, probabilistic latent semantic indexing, non-negative matrix factorization, and Gamma-Poisson distribution.
The LDA model is highly modular and can therefore be easily extended. The main field of interest is modeling relations between topics. This is achieved by using another distribution on the simplex instead of the Dirichlet. The Correlated Topic Model follows this approach, inducing a correlation structure between topics by using the logistic normal distribution instead of the Dirichlet. Another extension is the hierarchical LDA (hLDA), where topics are joined together in a hierarchy by using the nested Chinese restaurant process. LDA can also be extended to a corpus in which a document includes two types of information (e.g., words and names), as in the LDA-dual model. Nonparametric extensions of LDA include the Hierarchical Dirichlet process mixture model, which allows the number of topics to be unbounded and learnt from data and the Nested Chinese Restaurant Process which allows topics to be arranged in a hierarchy whose structure is learnt from data.
As noted earlier, PLSA is similar to LDA. The LDA model is essentially the Bayesian version of PLSA model. The Bayesian formulation tends to perform better on small datasets because Bayesian methods can avoid overfitting the data. In a very large dataset, the results are probably the same. One difference is that PLSA uses a variable d to represent a document in the training set. So in PLSA, when presented with a document the model hasn't seen before, we fix \Pr(w \mid z)—the probability of words under topics—to be that learned from the training set and use the same EM algorithm to infer \Pr(z \mid d)—the topic distribution under d. Blei argues that this step is cheating because you are essentially refitting the model to the new data.
Variations on LDA have been used to automatically put natural images into categories, such as "bedroom" or "forest", by treating an image as a document, and small patches of the image as words; one of the variations is called Spatial Latent Dirichlet Allocation.
from wiki http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation


We are looking for the best speakers willing to share their skills and experience with developers and managers.
This year, ConFoo is dedicated to software development, project management and best practices.
The technical part covers different aspects of Web development such as: Ruby , PHP, Python, .Net, Java, security, content management systems, frameworks, databases, system administration, Web standards, mobile development, accessibility and software architecture.
The management and best practices parts includes: project management, agile methodology, referencing (SEO), Web marketing analysis, social networking, and start-ups.
The conference will be held in Montreal from February 29th to March 2nd, 2012 at the prestigious Hotel Hilton Bonaventure and will be preceded by a few days of training.
Talk proposals must received by September 2nd, 2011.
Visit ConFoo.ca in order to submit a proposal.


| Figure 2 |
Spatial and temporal scales of investigation among highly ci ... |
| Figure 4 |
Number of physical or chemical stressors examined in biologi ... |
| Figure 3 |
Boxplots showing the frequency distribution of the (a) tempo ... |
| Figure 5 |
Primary physical or chemical stressor examined for 545 biolo ... |
| Figure 6 |
Type of biological response examined in a total of 545 biolo ... |
| Figure 1 |
Regional distribution of 461 highly cited ocean change studi ... |


{{#if currentUser}}
Add Playlist
{{else}}
Sign in to add songs.
{{/if}}
-
{{#each songs}}
{{> song}}
{{/each}}


Mission
Our focus
Startup & Venture development
data science: ‘We make your data speak & shine’
people-centered: ‘Data empowered people’
style-matters: ‘Dress your robot nicely’
more to come
stay tuned!


Resume
Hannah Hass
Contact
Education
College(s)
- Associate's Degree
- June 2014
- Clark College, Vancouver, WA
- Journalism
- June 2016
- Eastern Washington University, Cheney, WA
High School
Experience
Job/Volunteer A
- Volunteer
- Clark County Teen Talk
- 2008-2011
- I answered phone calls, emails and instant messages from teens and provided them with nonjudgmental peer-to-peer support.
Job/Volunteer B
- Server/Cashier
- Coldstone Creamery
- 2011
- I ran the cash register and served ice cream.
Job/Volunteer C
- Certified Nursing Assistant
- Kindred Transitional Care and Rehabilitation
- 2013
- I assisted residents with everyday activities.
Job/Volunteer D
- Writer
- The Odyssey Online
- 2015-2016
- I write opinion based articles on both current and national news, as well as topics pertaining to student life.
Skill Set
Software
- Github
- Photoshop
- Brackets
- InDesign


The page you are looking for might be removed or is temporarily unavailable
created by KhaoulaMerhab - devChallenges.io


Presenter:Zihyu Shen
Date: 2018.12.15
Fusion 前端肥宅
大數據 前端肥宅
台大語言所/Brain&Language Processing Lab
政大中文系
語料庫介面 很重要嗎？
聊聊WEB好設計(UI/UX)
聊聊語料庫介面設計
COPENS 改頭換面
爬蟲->語料清潔->語料分析->標記->統計分析->???
The most used and cited corpora in the public domain tend to be those which enablethe easiest and fastest extraction of relevant data. --A New Wordtree Corpus Interface
你懂的,但別人不懂-->不懂就不會用-->心血就白費
語料庫推廣-->正視語料價值-->更多應用/跨領域激盪（輿情分析,chatbot)
讓web成為你的好朋友(線上語料庫/語料庫管理/標記系統)
省時間 省力氣 珍重生命
學一套介面設計原則 放諸四海皆準(?)
Graphic user interface (GUI)
Web-based interface
command-line interfaces
好不好看？
好不好用？
loading快不快?
站內有我需要的資料？
User interface(UI)
User experience(UX)
Don't make me think!
Don't make me think!
Don't make me think!
when I look at a Web page it should be self-evident. Obvious. Self-explanatory. I should be able to “get it”—what it is and how to use it—without expending any effort thinking about it. --Steve Krug
系統真的很複雜
但你至少要可以自圓其說
On a self-explanatory page, it takes a little thought to “get it”—but only a little.
仔細處理size/color/layout/naming,減少使用者負擔
RULE: If you can’t make something self-evident, you at least need to make it self-explanatory.
We’re usually on a mission.
We know we don’t need to read everything. Scanning is how we find the relevant bits
Place users in control of the interface
Make it comfortable to interact with a product
Reduce cognitive load
Make user interfaces consistent
Make actions reversible (be forgiving)
Create an easy-to-navigate interface
Provide visual cues.
Predictability
Provide informative feedback (Be acknowledging)
Show the visibility of system status
Accommodate users with different skill levels
Apply Fitts’s Law to interactive elements
為起始點(滑鼠游標)與目標物(按鈕或其他操控物件)之間的距離和目標物的大小，決定了從起始點移動到目標所花費的時間
big buttons are easier to interact with
Design accessible interfaces
design for low vision, blindness, hearing impairments...
Color--strong impact on accessibility.
Use real-world metaphors
Engineer error
Error recovery
Protect a user’s work
human working memory can handle seven-plus-or-minus two “chunks” of information--George Miller
Chunking for sequences of information or actions
without normal spacing ==> incorrectly-captured phone numbers
Reduce the number of actions required to complete the task
three-click rule, which suggests the user of a product should be able to find any information with no more than three mouse clicks.
Recognition over recall
Promote visual clarity
The main idea of consistency is the idea of transferable knowledge
Visual consistency (Consistency of look)
The same colors, fonts, and icons should be present throughout the product
Functional consistency (Consistency of behavior)e.g.,buttons and menu items, should not change within a product.
Different websites:E-commerce Websites,News websites,Video (Streaming) websites...
***persona 需要基於real data
了解(期待/需求)==>滿足(期待/需求)
從使用者角度切入,而非設計者觀點
提供設計問題的解決方案e.g.bigger ‘Send’ button
Q: 誰會使用你的網站?
A: 語言學研究者,外語教學老師,學生,不同領域使用者:輿情分析,AI
Q: 為什麼人們要使用你的網站？
A:
Q: 你的網站解決了什麼問題？
A: 沒有語料可分析, local端跑不動資料分析...
Q: 什麼因素讓人們回鍋?
A: 查詢結果準確率高, 符合分析的需求, 好好用！...
Q: 什麼因素讓你的網站脫穎而出?
A: 提供別的語料庫沒有的分析技法, 美美噠的介面...
符合不同TA的需求,同時提供簡易跟困難的操作
專業術語要有平易近人的解釋
良好的第一印象,使用流暢
資料查找容易,資料呈現看得懂！
資料視覺化,幫助探索語析
Trustworthiness in Web Design
Navigation
搜尋畫面（進階搜尋）
結果呈現畫面
看起來合法又專業！重點在於...
公開透明對使用者有用/重要的資訊
不僅公開,還要易找
沒說明退費/換貨原則?隱藏多的服務費？運費？
要資料,先填表格？
先要我的個資？問太多問題?
站內提供大量相關內容==>顯示內容有組織,充實,並且願意幫助user
搬家公司：打包小撇步
清潔公司：打掃完照片？？辦公室大樓照片？？
無法被第三方review, 跟外界絕緣==>想隱藏什麼?小小小公司？
親朋好友乃至網友都不推薦？
喜歡看網友的quotes,case studies
更信任有external sites推薦你！
大量資料,撈出想要的？
Basic search vs. Advanced search
有別於一般網站的基本搜尋
所有搜尋條件全呈現在UI上
user can easily scan them ==> user friendly
資料量大時,work well
壞處：占空間
只呈現常用的搜尋條件,Clicking ‘More’ option
當有常用搜尋項目時,work well
使用者無需在意他們不需要的細節
壞處：點擊數++, 資料量大不適合
Input box
Checkbox list
Hyperlinks
Radio button list
select one value
user has to execute search explicitly after making selections
Visual icon
Visuals provide a good and appealing way to present information.
Providing tooltips along with icons/visuals
Standard icons/visuals
Slider
select a value from within a range
start and end values are known
More user-friendly for a touch devices
Use effective autosuggest
display all values when they are less than 8
more than 8, display MORE option
item still exceeds, provide remaining items in an extended list or a dialog box
clicking a Search or OK button, or hitting Enter key
on run-time when user changes a parameter
Proper and instant help
即時驗證qury format 並提示正確格式 > 搜尋後再提示
與usibility息息相關
users start using apps or websites with particular aims and expectations
==> best and easiest route
==> solving users’ problemsfulfill their goals/successfully interact with the product
without confusion or unnecessary clicks
Keep it simple
simplicity can be deceptive. Dig deeper and you may discover that what is actually quite complex has been cleverly packaged in a way that feels simple. This is IA in action.
Card Sorting with Target Users
WebNLP - An Integrated Web-Interface for Python NLTK and Voyant
New version of the BYU corpora
Computational Methods for Corpus Annotation and Analysis
WhiteLab 2.0: A Web Interface for Corpus Exploitation
The 4 Golden Rules of UI Design
Usability 101: Introduction to Usability
10 User Interface Design Fundamentals
Putting Personas to Work in UX Design: What They Are and Why They’re Important
3 Web Design Software to Easily Help You Build an Awesome Website – Without Any Technical Skills
Trustworthiness in Web Design: 4 Credibility Factors
How To Improve Advanced Search UX?
Death to Complexity: How we Simplified Advanced Search
Best Practices for Search Results
Designing Search: Results Pages
3 essential rules for effective navigation design


User Status
Your current status:You are signing in as a STUDENT of JS module 2
Enter credentials to continue...


Bachelor of Science in Computer Science
Best Thesis
3rd Place in the 5th Annual Conference of Information Technology and Computer Science Students of the Philippines
Language: C++, JAVA
S.Y. 2012 - 2013 1st and 2nd semester
Member
- 2011 - 2013 (OCTOBER)
President
- 2013 - 2014 (MARCH)
Position
- Front-End Developer
Knowledge Acquired
* JavaScript : Fundamentals into intermediate (including the proper practices in coding)
* jQuery : Fundamentals into intermediate(including the proper practices in making a jQuery plugin)
* Bootstrap 3: Used for visual presentation of the Website
* NodeJS : Fundamentals into intermediate(integrated with ExpressJS and mongodb as a database repository)
* AngularJS: Fundamentals( RestApi and Single Page Application)


{% extends "base.html" %} {% block content %}
Whether you love to cook or you just love to eat, odds are you have a collection of dishes and recipes you'd like to try. Maybe you have a bunch handed down from a loved one. In either case, you probably need a better method to keep them organized for the long haul than a bunch of index cards in a file folder.
Here is Yummy Recipe App for you, depending on the kind of recipe collection you have.


{% extends "layout.html" %} {% block content %}
| Name | Key | Minutes | Hours | Day of Month | Months | Days of Week | Min Allowed | Max Allowed | Lookback |
|---|
Some of the conventions differ from the cron format you may be used to (i.e. some don't start at 0 to align more closely with Python). Times refer to UTC time.
Key:


ince starting phase0 of Dev Boot Camp, I frequently find myself searching for answers to my coding questions on the web. Thankfully the community of programmers that have gone before me have left an impressive array...
The most recent conflict that comes to mind, though life is riddled with similar strifes, is an ongoing issue with my sister. For some time now she has felt like the black sheep of the family...
A core concept in software architecture called model-view-controller or MVC, is used to dictate the user interface of software applications. This concept is as much a core principle of computer programming as DRY (Don't Repeart Yourself) and thus deserves it's own blog post explanation...
When I think back to the times in my adult life when I have been the happiest, I realize that it boils best down to validation....
 I was just listening to JK Rowling's "A Casual Vacancy" ...
The best example of stereotype threat that I can think of in my life happened when I was working in South Carolina. As a 7th grade English Teacher in the South, I was for the first time in my life, a minority....
o far we have been using classes in ruby to organize and manipulate data using built in or user defined methods. We call the objects instantiated....
Pairing sessions are a central part of the DBC culture. With my experience in Phase 0 so far, I am beginning to understand why....
As an object oriented programming language, Ruby uses something called classes to organize a group of objects that share certain attributes or methods....
Ruby comes equipped with some very useful built-in methods. Though you can always write your own, it's helpful to know some of the basic methods, since your own method might use other built in methods...
Let's talk about big data for a second. I'm not talking about my 13" macbook pro, which stores 250 gigabytes, or<PHONE_NUMBER>000 bytes of data. I'm talking about BIG data....
I've taken the personal thinking style quiz twice now and both times my dominant thinking style was Abstract Sequential. A somewhat close second was Concrete Random, which is interesting since these are at opposite ends of the spectrum...
It seems that in the web development world of the last couple decades, one language reigns supreme: Javascript. But, where did it come from? What caused such a meteoric rise? Why are companies today crying out for front-end developers well-versed in Javascript?...
Before we talk about inline vs. inline-block we have to first talk about blocks. A block in CSS...
I think that the Fireside chat with Shereef was actually something that I needed to hear tonight...
Imgur has always been one of my favorite websites to visit when I just plain feel like killing time...