|
2 | 2 | "cells": [
|
3 | 3 | {
|
4 | 4 | "cell_type": "markdown",
|
5 |
| - "metadata": { |
6 |
| - "collapsed": false |
7 |
| - }, |
| 5 | + "metadata": {}, |
8 | 6 | "source": [
|
9 | 7 | "DeepLarning Couse HSE 2016 fall: \n",
|
10 | 8 | "* Arseniy Ashuha, you can text me ```ars.ashuha@gmail.com```,\n",
|
|
22 | 20 | {
|
23 | 21 | "cell_type": "code",
|
24 | 22 | "execution_count": null,
|
25 |
| - "metadata": { |
26 |
| - "collapsed": false |
27 |
| - }, |
| 23 | + "metadata": {}, |
28 | 24 | "outputs": [],
|
29 | 25 | "source": [
|
30 | 26 | "!wget https://www.dropbox.com/s/3hj16b0fj6yw7cc/data.tar.gz?dl=1 -O data.tar.gz\n",
|
|
41 | 37 | {
|
42 | 38 | "cell_type": "code",
|
43 | 39 | "execution_count": null,
|
44 |
| - "metadata": { |
45 |
| - "collapsed": false |
46 |
| - }, |
| 40 | + "metadata": {}, |
47 | 41 | "outputs": [],
|
48 | 42 | "source": [
|
49 | 43 | "%%time\n",
|
|
58 | 52 | {
|
59 | 53 | "cell_type": "code",
|
60 | 54 | "execution_count": null,
|
61 |
| - "metadata": { |
62 |
| - "collapsed": false |
63 |
| - }, |
| 55 | + "metadata": {}, |
64 | 56 | "outputs": [],
|
65 | 57 | "source": [
|
66 | 58 | "print \"each image code is a 1000-unit vector:\", img_codes.shape\n",
|
|
73 | 65 | {
|
74 | 66 | "cell_type": "code",
|
75 | 67 | "execution_count": null,
|
76 |
| - "metadata": { |
77 |
| - "collapsed": false |
78 |
| - }, |
| 68 | + "metadata": {}, |
79 | 69 | "outputs": [],
|
80 | 70 | "source": [
|
81 | 71 | "#split descriptions into tokens\n",
|
|
88 | 78 | {
|
89 | 79 | "cell_type": "code",
|
90 | 80 | "execution_count": null,
|
91 |
| - "metadata": { |
92 |
| - "collapsed": false |
93 |
| - }, |
| 81 | + "metadata": {}, |
94 | 82 | "outputs": [],
|
95 | 83 | "source": [
|
96 | 84 | "# Build a Vocabulary\n",
|
|
144 | 132 | {
|
145 | 133 | "cell_type": "code",
|
146 | 134 | "execution_count": null,
|
147 |
| - "metadata": { |
148 |
| - "collapsed": false |
149 |
| - }, |
| 135 | + "metadata": {}, |
150 | 136 | "outputs": [],
|
151 | 137 | "source": [
|
152 | 138 | "#try it out on several descriptions of a random image\n",
|
|
163 | 149 | {
|
164 | 150 | "cell_type": "code",
|
165 | 151 | "execution_count": null,
|
166 |
| - "metadata": { |
167 |
| - "collapsed": false |
168 |
| - }, |
| 152 | + "metadata": {}, |
169 | 153 | "outputs": [],
|
170 | 154 | "source": [
|
171 | 155 | "# network shapes. \n",
|
|
189 | 173 | {
|
190 | 174 | "cell_type": "code",
|
191 | 175 | "execution_count": null,
|
192 |
| - "metadata": { |
193 |
| - "collapsed": false |
194 |
| - }, |
| 176 | + "metadata": {}, |
195 | 177 | "outputs": [],
|
196 | 178 | "source": [
|
197 | 179 | "# Input Variable\n",
|
|
215 | 197 | {
|
216 | 198 | "cell_type": "code",
|
217 | 199 | "execution_count": null,
|
218 |
| - "metadata": { |
219 |
| - "collapsed": false |
220 |
| - }, |
| 200 | + "metadata": {}, |
221 | 201 | "outputs": [],
|
222 | 202 | "source": [
|
223 | 203 | "#network inputs\n",
|
|
233 | 213 | {
|
234 | 214 | "cell_type": "code",
|
235 | 215 | "execution_count": null,
|
236 |
| - "metadata": { |
237 |
| - "collapsed": false |
238 |
| - }, |
| 216 | + "metadata": {}, |
239 | 217 | "outputs": [],
|
240 | 218 | "source": [
|
241 | 219 | "# input layer for image features\n",
|
|
251 | 229 | {
|
252 | 230 | "cell_type": "code",
|
253 | 231 | "execution_count": null,
|
254 |
| - "metadata": { |
255 |
| - "collapsed": false |
256 |
| - }, |
| 232 | + "metadata": {}, |
257 | 233 | "outputs": [],
|
258 | 234 | "source": [
|
259 | 235 | "# Concatinate image features and word embedings in one sequence \n",
|
|
270 | 246 | {
|
271 | 247 | "cell_type": "code",
|
272 | 248 | "execution_count": null,
|
273 |
| - "metadata": { |
274 |
| - "collapsed": false |
275 |
| - }, |
| 249 | + "metadata": {}, |
276 | 250 | "outputs": [],
|
277 | 251 | "source": [
|
278 | 252 | "# Decoding of rnn hiden states\n",
|
|
332 | 306 | {
|
333 | 307 | "cell_type": "code",
|
334 | 308 | "execution_count": null,
|
335 |
| - "metadata": { |
336 |
| - "collapsed": false |
337 |
| - }, |
| 309 | + "metadata": {}, |
338 | 310 | "outputs": [],
|
339 | 311 | "source": [
|
340 | 312 | "next_word_probas = <get network output>\n",
|
|
343 | 315 | "predictions_flat = next_word_probas[:,:-1].reshape((-1,n_tokens))\n",
|
344 | 316 | "reference_answers = sentences[:,1:].reshape((-1,))\n",
|
345 | 317 | "\n",
|
346 |
| - "#write symbolic loss function to train NN for\n", |
347 |
| - "loss = <compute elementwise loss function>\n", |
348 |
| - "\n", |
349 |
| - "#mean over non-PAD tokens\n", |
350 |
| - "output_mask = sentence_mask[:,1:]\n", |
351 |
| - "loss = (loss.reshape(reference_answers.shape)*output_mask).sum() / output_mask.sum()" |
| 318 | + "#write symbolic loss function to minimize over NN params\n", |
| 319 | + "loss = <compute elementwise loss function>" |
352 | 320 | ]
|
353 | 321 | },
|
354 | 322 | {
|
|
367 | 335 | {
|
368 | 336 | "cell_type": "code",
|
369 | 337 | "execution_count": null,
|
370 |
| - "metadata": { |
371 |
| - "collapsed": false |
372 |
| - }, |
| 338 | + "metadata": {}, |
373 | 339 | "outputs": [],
|
374 | 340 | "source": [
|
375 | 341 | "#compile a functions for training and evaluation\n",
|
|
381 | 347 | },
|
382 | 348 | {
|
383 | 349 | "cell_type": "markdown",
|
384 |
| - "metadata": { |
385 |
| - "collapsed": false |
386 |
| - }, |
| 350 | + "metadata": {}, |
387 | 351 | "source": [
|
388 | 352 | "# Training\n",
|
389 | 353 | "\n",
|
|
436 | 400 | {
|
437 | 401 | "cell_type": "code",
|
438 | 402 | "execution_count": null,
|
439 |
| - "metadata": { |
440 |
| - "collapsed": false |
441 |
| - }, |
| 403 | + "metadata": {}, |
442 | 404 | "outputs": [],
|
443 | 405 | "source": [
|
444 | 406 | "generate_batch(img_codes,captions,3)"
|
|
471 | 433 | "cell_type": "code",
|
472 | 434 | "execution_count": null,
|
473 | 435 | "metadata": {
|
474 |
| - "collapsed": false, |
475 | 436 | "scrolled": false
|
476 | 437 | },
|
477 | 438 | "outputs": [],
|
|
497 | 458 | },
|
498 | 459 | {
|
499 | 460 | "cell_type": "markdown",
|
500 |
| - "metadata": { |
501 |
| - "collapsed": false |
502 |
| - }, |
| 461 | + "metadata": {}, |
503 | 462 | "source": [
|
504 | 463 | "### apply trained model"
|
505 | 464 | ]
|
506 | 465 | },
|
507 | 466 | {
|
508 | 467 | "cell_type": "code",
|
509 | 468 | "execution_count": null,
|
510 |
| - "metadata": { |
511 |
| - "collapsed": false |
512 |
| - }, |
| 469 | + "metadata": {}, |
513 | 470 | "outputs": [],
|
514 | 471 | "source": [
|
515 | 472 | "#the same kind you did last week, but a bit smaller\n",
|
|
520 | 477 | "\n",
|
521 | 478 | "#load weights\n",
|
522 | 479 | "lenet_weights = pickle.load(open('data/blvc_googlenet.pkl'))['param values']\n",
|
| 480 | + "#python3: pickle.load(open('data/blvc_googlenet.pkl', 'rb'), encoding='latin1')['param values']\n", |
| 481 | + "\n", |
| 482 | + "\n", |
523 | 483 | "set_all_param_values(lenet[\"prob\"], lenet_weights)\n",
|
524 | 484 | "\n",
|
525 | 485 | "#compile get_features\n",
|
|
531 | 491 | {
|
532 | 492 | "cell_type": "code",
|
533 | 493 | "execution_count": null,
|
534 |
| - "metadata": { |
535 |
| - "collapsed": false |
536 |
| - }, |
| 494 | + "metadata": {}, |
537 | 495 | "outputs": [],
|
538 | 496 | "source": [
|
539 | 497 | "from matplotlib import pyplot as plt\n",
|
|
547 | 505 | {
|
548 | 506 | "cell_type": "code",
|
549 | 507 | "execution_count": null,
|
550 |
| - "metadata": { |
551 |
| - "collapsed": false |
552 |
| - }, |
| 508 | + "metadata": {}, |
553 | 509 | "outputs": [],
|
554 | 510 | "source": [
|
555 | 511 | "#deprocess and show, one line :)\n",
|
|
605 | 561 | {
|
606 | 562 | "cell_type": "code",
|
607 | 563 | "execution_count": null,
|
608 |
| - "metadata": { |
609 |
| - "collapsed": false |
610 |
| - }, |
| 564 | + "metadata": {}, |
611 | 565 | "outputs": [],
|
612 | 566 | "source": [
|
613 | 567 | "for i in range(10):\n",
|
|
685 | 639 | ],
|
686 | 640 | "metadata": {
|
687 | 641 | "kernelspec": {
|
688 |
| - "display_name": "Python [Root]", |
| 642 | + "display_name": "Python 3", |
689 | 643 | "language": "python",
|
690 |
| - "name": "Python [Root]" |
| 644 | + "name": "python3" |
691 | 645 | },
|
692 | 646 | "language_info": {
|
693 | 647 | "codemirror_mode": {
|
694 | 648 | "name": "ipython",
|
695 |
| - "version": 2 |
| 649 | + "version": 3 |
696 | 650 | },
|
697 | 651 | "file_extension": ".py",
|
698 | 652 | "mimetype": "text/x-python",
|
699 | 653 | "name": "python",
|
700 | 654 | "nbconvert_exporter": "python",
|
701 |
| - "pygments_lexer": "ipython2", |
702 |
| - "version": "2.7.12" |
| 655 | + "pygments_lexer": "ipython3", |
| 656 | + "version": "3.6.2" |
703 | 657 | }
|
704 | 658 | },
|
705 | 659 | "nbformat": 4,
|
706 |
| - "nbformat_minor": 0 |
| 660 | + "nbformat_minor": 1 |
707 | 661 | }
|
0 commit comments