Татарак — только ради тебя! — potrefena husa hybernska

Z grilu a pánví

339,–

na olivovém oleji, s bramborovým pyré s pak čoi zelí a jemně zauzenou limetkovou omáčkou s koprem

KUŘECÍ PRSO

259,–

z francouzského žlutého kuřátka, s ragú z cuket, grilovaných paprik, cherry rajčat a brambůrek se smetanovým demi glacé s houbami

369,–

z vyzrálého hovězího masa s restovanou cibulkou, volským okem, hranolky a tatarskou omáčkou

239,–

připravený v sous vide s česnekovým brambůrkem s cibulkou, slaninou, fazolkami a pepřovou omáčkou

LEGENDÁRNÍ «BIG JUD» XXL BURGER 1LB

339,–

s hovězím masem, čedarem, slaninou, pečenou cibulí, nakládanými okurkami, rajčaty a koktejlovou omáčkou s hranolky

Jídla k pivu

189,–

kuřecí křidélka v ostré marinádě s omáčkou blue cheese, řapíkatým celerem a karotkou

235,–

z vybraného hovězího masa, u nás míchaný, podávaný s topinkami 5ks a stroužky česneku

159,–

s kousky vepřové kýty, s cibulkou a volským okem na česnekových topinkách

159,–

z husích jatýrek, ochucená brandy, balená ve slanině, s jablečným chutney a francouzskou bagetou

139,–

pomalu pečený, u nás lehce vyuzený, na rozpečeném chlebu s hořčicí, restovanou cibulkou a čerstvým křenem

189,–

smažené avokádo v panco strouhance v pářené bulce se salátkem, wasabi majonézou, hranolky

95,–

velká porce horkých hranolek s domácí tatarskou omáčkou

95,–

u nás nakládaný s cibulí, kořením, česnekem a chilli papričkami, pěkně uleželý

TRADITIONAL RECIPES

MAXI BEEF ROLLS

235,–

from matured beef leg, filled with bacon, gherkin, sausage and egg, served with bread and potato dumplings or steamed rice

LEFFE PORK RIBS

299,–

made only in our restaurant according to the original recipe, slowly roasted in a dark beer sauce and served with coleslaw

ROAST DUCK

299,–

half of duck roasted in lager until golden and served with bread, bacon and potato dumplings and red and white cabbage

165,–

served with mashed potatoes and cucumber salad

289,–

with onion, vegetables, spices and dark beer, served with gravy, fresh horseradish, pickles and hot peppers

189,–

from matured beef with vegetable-creamy sauce, dumplings and wild cranberries

189,–

from pork cheeks, with bacon dumplings and fermented red cabbage

Tradiční recepty

199,–

z vyzrálého hovězího masa na zelenině a smetaně s houskovým knedlíkem a divokými brusinkami

199,–

z vepřových líček, se slaninovými knedlíky a fermentovaným červeným zelím

209,–

pomalu pečená s cibulkou a slaninou ve vakuu, s hranolky a tatarskou omáčkou

PEČENÉ KOLENO

1 ks299,–

s cibulkou, zeleninou, kořením a tmavém pivu, podávané se silnou omáčkou, čerstvým křenem, feferonkami a okurkami

169,–

podávané s bramborovou kaší a selským okurkovým salátem

VEPŘOVÁ ŽEBÍRKA LEFFE

299,–

připravovaná pouze u nás dle originální receptury, pomalu pečená v omáčce z tmavého piva servírovaná se zelným salátkem

299,–

dozlatova pečená půlka kachny, s houskovým, slaninovým a bramborovým knedlíkem s červeným a bílým zelím

ŠPANĚLSKÝ MAXI PTÁČEK

245,–

z uzrálé kýty, plněný slaninou, okurkou, klobásou a vejcem, podávaný s houskovým a bramborovým knedlíkem nebo dušenou rýží

Физическая аналогия

Представим, что все точки отображения соединены пружинами. Жесткость пружины, соединяющей точки i и j, зависит от разности между сходством двух точек данных и сходством двух точек отображения, т.е. pij — qij. Теперь мы позволим системе изменяться согласно законам физики. Если расстояние между двумя точками отображения большое, а между точками данных малое, – точки отображения притягиваются. Если наоборот – точки отображения отталкиваются.

Целевое отображение будет получено при достижении равновесия.

Представленная ниже иллюстрация демонстрирует процесс динамического формирования структуры графа, основанный на аналогичном подходе. Узлы соединены пружинами, и система изменяется согласно законам физики (автор примера – Майк Босток (Mike Bostock).

Визуализация рукописных цифр

Для начала импортируем библиотеки.

# That's an impressive list of imports.
import numpy as np
from numpy import linalg
from numpy.linalg import norm
from scipy.spatial.distance import squareform, pdist

# We import sklearn.
import sklearn
from sklearn.manifold import TSNE
from sklearn.datasets import load_digits
from sklearn.preprocessing import scale

# We'll hack a bit with the t-SNE code in sklearn 0.15.2.
from sklearn.metrics.pairwise import pairwise_distances
from sklearn.manifold.t_sne import (_joint_probabilities,
_kl_divergence)
from sklearn.utils.extmath import _ravel
# Random state.
RS = 20150101

# We'll use matplotlib for graphics.
import matplotlib.pyplot as plt
import matplotlib.patheffects as PathEffects
import matplotlib
%matplotlib inline

# We import seaborn to make nice plots.
import seaborn as sns
sns.set_style('darkgrid')
sns.set_palette('muted')
sns.set_context("notebook", font_scale=1.5,
rc={"lines.linewidth": 2.5})

# We'll generate an animation with matplotlib and moviepy.
from moviepy.video.io.bindings import mplfig_to_npimage
import moviepy.editor as mpy

Теперь загрузим классический, содержащий рукописные цифры. Он состоит из 1797 изображений с разрешением 8 * 8 = 64 пикселя каждое.

digits = load_digits()
digits.data.shape
print(digits)

Ниже представлены изображения цифр:

nrows, ncols = 2, 5
plt.figure(figsize=(6,3))
plt.gray()
for i in range(ncols * nrows):
    ax = plt.subplot(nrows, ncols, i + 1)
    ax.matshow(digits.images)
    plt.xticks([]); plt.yticks([])
    plt.title(digits.target)
plt.savefig('images/digits-generated.png', dpi=150)

Применим к набору данных алгоритм t-SNE. Благодаря scikit-learn, для этого требуется всего одна строка кода.

# We first reorder the data points according to the handwritten numbers.
X = np.vstack(
               for i in range(10)])
y = np.hstack(
               for i in range(10)])
digits_proj = TSNE(random_state=RS).fit_transform(X)

Ниже представлена функция, примененная для визуализации преобразованного набора данных. Цвет каждой точки соответствует определенной цифре (безусловно, эта информация не использовалась алгоритмом уменьшения размерности).

def scatter(x, colors):
    # We choose a color palette with seaborn.
    palette = np.array(sns.color_palette("hls", 10))

    # We create a scatter plot.
    f = plt.figure(figsize=(8, 8))
    ax = plt.subplot(aspect='equal')
    sc = ax.scatter(x, x, lw=0, s=40,
                    c=palette)
    plt.xlim(-25, 25)
    plt.ylim(-25, 25)
    ax.axis('off')
    ax.axis('tight')

    # We add the labels for each digit.
    txts = []
    for i in range(10):
        # Position of each label.
        xtext, ytext = np.median(x, axis=0)
        txt = ax.text(xtext, ytext, str(i), fontsize=24)
        txt.set_path_effects()
        txts.append(txt)

    return f, ax, sc, txts

Получим следующий результат.

scatter(digits_proj, y)
plt.savefig('images/digits_tsne-generated.png', dpi=120)

Мы видим, что изображения, соответствующие различным цифрам, четко разделены на группы.

Алгоритм

Примечательно то, что эта физическая аналогия естественным образом вытекает из математического алгоритма. Она соответствует минимизации расстояния Кульбака-Лейблера (Kullback-Leibler divergence) между двумя распределениями (pij) и (qij):

Данная формула выражает расстояние между двумя матрицами сходства.

Чтобы минимизировать эту величину, применим градиентный спуск (gradient descent). Градиент может быть вычислен аналитически:

Здесь uij – единичный вектор, идущий от yj к yi. Этот градиент выражает сумму всех сил, приложенных к точке отображения i.

Проиллюстрируем этот процесс с помощью анимации. Необходимо реализовать «обезьяний патч» (monkey patch) для внутренней функции _gradient_descent(), которая присутствует в реализации t-SNE в библиотеке scikit-learn, чтобы иметь возможность регистрировать положение точек отображения на каждой итерации.

# This list will contain the positions of the map points at every iteration.
positions = []
def _gradient_descent(objective, p0, it, n_iter, n_iter_without_progress=30,
                      momentum=0.5, learning_rate=1000.0, min_gain=0.01,
                      min_grad_norm=1e-7, min_error_diff=1e-7, verbose=0,
                      args=[]):
    # The documentation of this function can be found in scikit-learn's code.
    p = p0.copy().ravel()
    update = np.zeros_like(p)
    gains = np.ones_like(p)
    error = np.finfo(np.float).max
    best_error = np.finfo(np.float).max
    best_iter = 0

    for i in range(it, n_iter):
        # We save the current position.
        positions.append(p.copy())

        new_error, grad = objective(p, *args)
        error_diff = np.abs(new_error - error)
        error = new_error
        grad_norm = linalg.norm(grad)

        if error  n_iter_without_progress:
            break
        if min_grad_norm >= grad_norm:
            break
        if min_error_diff >= error_diff:
            break

        inc = update * grad >= 0.0
        dec = np.invert(inc)
        gains += 0.05
        gains *= 0.95
        np.clip(gains, min_gain, np.inf)
        grad *= gains
        update = momentum * update - learning_rate * grad
        p += update

    return p, error, i
sklearn.manifold.t_sne._gradient_descent = _gradient_descent

Выполним алгоритм еще раз, но теперь сохраним все промежуточные положения.

X_proj = TSNE(random_state=RS).fit_transform(X)
X_iter = np.dstack(position.reshape(-1, 2)
                   for position in positions)

Создадим анимацию с помощью библиотеки MoviePy.

f, ax, sc, txts = scatter(X_iter, y)

def make_frame_mpl(t):
    i = int(t*40)
    x = X_iter
    sc.set_offsets(x)
    for j, txt in zip(range(10), txts):
        xtext, ytext = np.median(x, axis=0)
        txt.set_x(xtext)
        txt.set_y(ytext)
    return mplfig_to_npimage(f)

animation = mpy.VideoClip(make_frame_mpl,
                          duration=X_iter.shape/40.)
animation.write_gif("https://d3ansictanv2wj.cloudfront.net/images/animation-94a2c1ff.gif", fps=20)

Здесь четко видны различные фазы оптимизации, как и описано в публикации.

Давайте также создадим анимацию для матрицы сходства точек отображения. Мы увидим, что она все больше и больше приближается к матрице сходства точек данных.

n = 1. / (pdist(X_iter, "sqeuclidean") + 1)
Q = n / (2.0 * np.sum(n))
Q = squareform(Q)

f = plt.figure(figsize=(6, 6))
ax = plt.subplot(aspect='equal')
im = ax.imshow(Q, interpolation='none', cmap=pal)
plt.axis('tight')
plt.axis('off')

def make_frame_mpl(t):
    i = int(t*40)
    n = 1. / (pdist(X_iter, "sqeuclidean") + 1)
    Q = n / (2.0 * np.sum(n))
    Q = squareform(Q)
    im.set_data(Q)
    return mplfig_to_npimage(f)

animation = mpy.VideoClip(make_frame_mpl,
                          duration=X_iter.shape/40.)
animation.write_gif("https://d3ansictanv2wj.cloudfront.net/images/animation_matrix-da2d5f1b.gif", fps=20)

Распределение Стьюдента

Теперь объясним, почему для точек отображения было выбрано распределение Стьюдента, в то время как для точек данных применяется нормальное распределение. Известно, что объем N-мерного шара радиуса r пропорционален rN. При больших N, если выбирать случайные точки в шаре, большинство точек будет располагаться около поверхности, и очень небольшое количество – около центра.

Моделирование, реализованное ниже, демонстрирует распределение расстояний для этих точек при различном количестве измерений.

npoints = 1000
plt.figure(figsize=(15, 4))
for i, D in enumerate((2, 5, 10)):
    # Normally distributed points.
    u = np.random.randn(npoints, D)
    # Now on the sphere.
    u /= norm(u, axis=1)
    # Uniform radius.
    r = np.random.rand(npoints, 1)
    # Uniformly within the ball.
    points = u * r**(1./D)
    # Plot.
    ax = plt.subplot(1, 3, i+1)
    ax.set_xlabel('Ball radius')
    if i == 0:
        ax.set_ylabel('Distance from origin')
    ax.hist(norm(points, axis=1),
            bins=np.linspace(0., 1., 50))
    ax.set_title('D=%d' % D, loc='left')
plt.savefig('images/spheres-generated.png', dpi=100, bbox_inches='tight')

При уменьшении размерности набора данных, если использовать гауссово распределение для точек данных и точек отображения, мы получим дисбаланс в распределении расстояний для соседей точек. Это объясняется тем, что распределение расстояний существенно отличается для пространства большой размерности и для пространства малой размерности. Тем не менее, алгоритм пытается воспроизвести одинаковые расстояния в обоих пространствах. Этот дисбаланс создает избыток сил притяжения, что иногда приводит к неудачному отображению. Данный недостаток действительно присутствовал в первоначальном алгоритме SNE, разработанном Хинтоном и Ровейсом (Roweis) и опубликованном в 2002 году.

Алгоритм t-SNE решает эту проблему, используя распределение Стьюдента с одной степенью свободы (или распределение Коши) для точек отображения. В отличие от гауссова распределения, это распределение имеет значительно более «тяжелый» хвост, что позволяет компенсировать дисбаланс. Для данного сходства между двумя точками данных, две соответствующие точки отображения должны находиться намного дальше друг от друга, чтобы их сходство соответствовало сходству точек данных. Это можно увидеть на следующем графике.

z = np.linspace(0., 5., 1000)
gauss = np.exp(-z**2)
cauchy = 1/(1+z**2)
plt.plot(z, gauss, label='Gaussian distribution')
plt.plot(z, cauchy, label='Cauchy distribution')
plt.legend()
plt.savefig('images/distributions-generated.png', dpi=100)

Использование этого распределения обеспечивает более эффективную визуализацию данных, при которой группы точек более отчетливо отделены друг от друга.

Утка Драка во сне

Приснилось.. Что я с младшим братишкой перехожу дорогу… Как только прошли… Сзади визг тормозом машины…. Мы повернулись что бы посмотреть… На дороге образовалась дырка в которой торчала задняя часть утки… И она очень сильно кричала… На асфальте рядом с ней лежали ее внутренности… От крика мы пошли подальше.. Потому что он был не выносим… Затем услышали лай собаки… И она начала рвать утку… И мы еще быстрее ушли от туда…… Я проснулся от такого… Потом лег обратно… Приснился другой сон… Что я с незнакомой девушкой еду на машине… Не на своей…. А на ее… Но почему то я хорошо знал ее… Мы остановились возле магазина и зашли в него… Там меня стукнул человек плечом… И я начал с ним драться… Когда он упал подошел другой… Сколько бы я его не бил… Он не падал… Лишь после каждого удара… Смеялся… И я опять проснулся….. Возможно ли это быть как то связанно стем… Что у меня 2 месяца назад умер средний брат???? Помогите пожалуйста… За это время очень много странного снилось… Потом напишу….
   Сонник Утка Драка

DISHES THAT GO WELL WITH BEER

95,–HERMELÍN

marinated in our restaurant with onion, spices, garlic and chilli peppers, nicely matured

MARINATED PORK BELLY

149,–

slowly roasted, gently smoked in our restaurant, served with toasted bread, mustard, fried onion and fresh horseradish

95,–

a large portion of hot French fries with tartar sauce

149,–

goose liver pâté seasoned with brandy, wrapped in Iberian bacon served with apple chutney and French baguette

AVOCADO BURGER

179,–

fried avocado in panco breadcrumbs served in a steamed bun with lettuce and wasabi mayonnaise, served with French fries

149,–

chunks of pork leg with onions and fried eggs served on crusty fried bread with garlic

179,–

chicken wings in a spicy marinade served with a blue cheese sauce, celery and carrot

STEAK TARTARE

225,–

From selected beef from, mixed in our restaurant, served with fried bread (5 pieces) and cloves of garlic ( raw meat )

Vína

bílé

VELTLÍNSKÉ ZELENÉ, GREEN

0.75 l379,–

Arte Vini — GREEN se Vám představí zejména svou svěží aromatikou připomínající vůni čerstvě sklizených jablek a exotických plodů. Je to víno lehké stavby a přitom s nezaměnitelnou příjemnou vůní s typickou „pepřovou“ štiplavostí na jazyce. Prostě typický, svěží a kořenitý veltín.

0.75 l339,–

Kubík – Víno zlatavé barvy, ve vůni s tóny žlutého melounu a tropického ovoce, chuť je svěží, harmonická a suchá.

0.75 l369,–

Michlovský – Svěžest jarních květin a expresivní ovocný projev je stylově doprovázen jemnými tóny lipového medu s příchutí vlašských ořechů a rozvíjející se kořenitostí.

SAUVIGNON POZDNÍ SBĚR

Vinařství Pod Hradem — Víno vyniká komplexní velmi působivou vůní, ve které můžete nalézt tóny černého rybízu, květů černého bezu a hluchavky. Chuť je příjemně šťavnatá, lehce kořenitá s výraznější kyselinkou a nádechem grapefruitu.

0.75 l369,–

Michlovský — Jemná vůně kvetoucích pomerančovníků a poupat růží doprovází v chuti kompotované liči s odstíny jablečného závinu v dochuti, polosuché

Vinařství Pod Hradem — Atraktivní rubínová barva tohoto vína je velmi typická pro tuto odrůdu, stejně jako aroma, které připomíná pecky z drobného ovoce, především třešní a višní. Chuť je také ovocná se zajímavou kořenitostí v dochuti připomínající vanilku a skořici.

MODRÝ PORTUGAL POZDNÍ SBĚR

0.75 l469,–

Radocha — Víno s přívlastkem pozdní sběr je víno tmavě rubínové barvy, s vůní pivoněk doplněnou tóny drobného bobulového ovoce. Chuť je lehčí, ovocná, harmonická, s jemnou tříslovinko.

bílé

Pinot Gririo Veneto

0.75 l319,–

Pirovano — Slámově žlutá barva se zlatavými odlesky. Ve vůni nalezneme svěží tóny banánu a ananasu, doplněné jemnou citrusovou stopou, která přitažlivě obohacuje celý buket. V závěru vyvstává aroma lučního kvítí. Harmonická chuť.

PRIMITIVO DEL SALENTO FARANTO IGT

0.75 l489,–

Surani — Červené víno z hroznů Primitivo, pro získání kulatosti zraje po dobu několika měsíců v dřevených sudech. Má výraznou rubínovou barvu, voní po ostružinách a vanilce, chuť je teplá, strukturovaná se sametovými tříslovinami.

Doňa Paula- pikantní a intenzivní tóny červeného ovoce a bylin

0.75 l339,–

Curicó Valley – ovocná vůně s typickými tóny malin a jahod

Koktejly

165,–1 l469,–

gin, vodka, rum, tequila, triple sec, citrónová šťáva, Coca-Cola

149,–3 l999,–

klasické, jahodové — rum, limety, třtinový cukr, máta, soda

139,–

brazilský rum, limety, třtinový cukr

129,–

vodka, limeta, okurka, třtinový cukr

139,–

rum, kokosový sirup, ananasový džus, smetana

129,–

vodka, rebarborový likér, brusinkový džus

139,–1 l369,–

vodka, broskvový likér, pomerančový, brusinkový, ananasový džus, grenadina

119,–3 l869,–

rum, limetová šťáva, Coca-Cola

149,–

tequila, pomerančový džus, grenadina

139,–3 l529,–

rum, citrónová šťáva, jahody

129,–

gin, bezinkový sirup, tonic, jahody

85,–

Kahlúa, Baileys, Stroh rum

72,–

fík naložený ve vodce

109,–

ananasový a pomerančový džus, kokosový sirup, smetana

109,–

jahody, banán, hruškový džus, grenadina

99,–

limety, třtinový cukr, máta, soda

Евгений Тутлаев

Очень нравится писать о путешествиях и туризме! Открыт и буду рад сотрудничеству с турфирмами, гидами, организаторами путешествий, авиаперевозчиками! Пишите!

Оцените автора