Skip to content

Instantly share code, notes, and snippets.

@yumatsuoka
Last active November 8, 2016 04:50
Show Gist options
  • Save yumatsuoka/fe336234a0cd060c50da71e8b49b8c9a to your computer and use it in GitHub Desktop.
Save yumatsuoka/fe336234a0cd060c50da71e8b49b8c9a to your computer and use it in GitHub Desktop.
Make a batch size of shuffle and combination array on a dataset
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 複数のクラスから構成されるデータ群からデータの組み合わせを作る"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## データdataとdataの教師ラベルtargetで構成されるデータセットを用意\n",
"## 最終目標:基準となるデータx_aと,x_aと同じクラスのデータx_p,x_aと異なるクラスのデータx_nの3つのデータの組み合わせをbatch個作成"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# -*-coding:utf-8-*-\n",
"\n",
"from __future__ import print_function\n",
"\n",
"%matplotlib inline\n",
"import six, time\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## とりあえず,x_a, x_p, x_nすべての組み合わせを作ってみる"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def all_conv(data, target):\n",
" \"\"\"\n",
" dataに対してすべての組み合わせx_a, x_p, x_nを作成する\n",
" 入力:データ群data(numpy.ndarray), dataの教師ラベルtarget(numpy.ndarray)\n",
" 出力:基準となるデータx_a(numpy.ndarray), x_aと同じクラスのデータx_p(numpy.ndarray), x_aと異なるクラスのデータx_n(numpy.ndarray)\n",
" \"\"\"\n",
" # 組み合わせを作るリストのデータ数を取得\n",
" nl = len(target)\n",
" # データ群のクラス数を取得\n",
" n_class = len(list(set(target)))\n",
" # それぞれのクラスに属するデータ数をクラスごとにリストとして取得\n",
" nl_class = [len(np.where(target == c)[0]) for c in six.moves.range(n_class)]\n",
" # あるクラスに属する\n",
" x_a = np.asarray([data[idx] \n",
" for c in six.moves.range(n_class) \n",
" for i in six.moves.range(nl-nl_class[c]) \n",
" for idx in np.random.permutation(np.where(target==c)[0])])\n",
" x_p = np.asarray([data[idx] \n",
" for c in six.moves.range(n_class) \n",
" for i in six.moves.range(nl-nl_class[c]) \n",
" for idx in np.random.permutation(np.where(target==c)[0])])\n",
" x_n = np.asarray([data[idx] \n",
" for c in six.moves.range(n_class) \n",
" for i in six.moves.range(nl_class[c]) \n",
" for idx in np.random.permutation(np.where(target!=c)[0])])\n",
" return x_a, x_p, x_n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ためしに10クラスのtargetを用意し,dataは0~n_class*n_items-1までのint型のデータが入っているデータセットを作成"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data list: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24\n",
" 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49\n",
" 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74\n",
" 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]\n",
"target list: [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3\n",
" 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7\n",
" 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9]\n"
]
}
],
"source": [
"n_class = 10\n",
"n_items = 10\n",
"data = np.arange(n_class*n_items)\n",
"target = np.asarray([i for i in six.moves.range(n_class) for j in six.moves.range(n_items)])\n",
"print(\"data list:\", data)\n",
"print(\"target list:\", target)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 上記のデータセットでall_conv()を実行"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"処理時間: 0.017848262091337594\n",
"x_a len:9000, x_p len:9000, x_n len:9000\n"
]
}
],
"source": [
"start_time = time.clock()\n",
"x_a, x_p, x_n = all_conv(data, target)\n",
"print(\"処理時間:\", time.clock() - start_time)\n",
"print(\"x_a len:{}, x_p len:{}, x_n len:{}\".format(len(x_a), len(x_p), len(x_n)))\n",
"# print(\"x_a[:100]:{},\\n x_p[:100]:{},\\n x_n[:100]:{}\".format(x_a[:1000], x_p[:1000], x_n[:1000]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### それぞれのリストの同じインデックスにおいてもっともらしいデータの組み合わせを選ぶことができていた\n",
"### このすべての組み合わせからランダムにbatch個取り出す"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b_xa:[24 41 37 83 57 59 3 69 35 22], b_xp:[25 44 33 82 51 55 2 66 39 25], b_xn:[58 98 46 17 92 78 67 39 6 89]\n"
]
}
],
"source": [
"b_size = 10\n",
"b_pool = np.random.permutation(len(x_a))[:b_size]\n",
"b_xa = x_a[b_pool]\n",
"b_xp = x_p[b_pool]\n",
"b_xn = x_n[b_pool]\n",
"print(\"b_xa:{}, b_xp:{}, b_xn:{}\".format(b_xa, b_xp, b_xn))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## どれくらいの重さの処理になるのか実験してみる\n",
"### 10クラスのデータとして,1クラスに属するデータ数n_itemsを100から1000まで増やしていく"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1クラス中の要素数:100, 作成したリスト長:900000, 処理時間:1.1165698094839627\n",
"1クラス中の要素数:200, 作成したリスト長:3600000, 処理時間:4.337488472777068\n",
"1クラス中の要素数:300, 作成したリスト長:8100000, 処理時間:10.134934677774254\n",
"1クラス中の要素数:400, 作成したリスト長:14400000, 処理時間:18.0659579530452\n",
"1クラス中の要素数:500, 作成したリスト長:22500000, 処理時間:27.662305320173004\n",
"1クラス中の要素数:600, 作成したリスト長:32400000, 処理時間:39.810014571342776\n",
"1クラス中の要素数:700, 作成したリスト長:44100000, 処理時間:54.615074575106064\n",
"1クラス中の要素数:800, 作成したリスト長:57600000, 処理時間:71.5884719995397\n",
"1クラス中の要素数:900, 作成したリスト長:72900000, 処理時間:91.13542515819313\n",
"1クラス中の要素数:1000, 作成したリスト長:90000000, 処理時間:113.0919387972499\n"
]
}
],
"source": [
"n_class = 10\n",
"b_size = 10\n",
"\n",
"list_len = [0 for i in six.moves.range(10)]\n",
"e_time = [0. for i in six.moves.range(10)]\n",
"for i in six.moves.range(1, 11, 1):\n",
" n_items = i * 100\n",
" data = np.arange(n_class*n_items)\n",
" target = np.asarray([i for i in six.moves.range(n_class) for j in six.moves.range(n_items)])\n",
" start_time = time.clock()\n",
" x_a, x_p, x_n = all_conv(data, target)\n",
" b_pool = np.random.permutation(len(x_a))[:b_size]\n",
" b_xa = x_a[b_pool]\n",
" b_xp = x_p[b_pool]\n",
" b_xn = x_n[b_pool]\n",
" list_len[i-1] = len(x_a)\n",
" e_time[i-1] = time.clock() - start_time\n",
" print(\"1クラス中の要素数:{}, 作成したリスト長:{}, 処理時間:{}\".format(n_items, list_len[i-1], e_time[i-1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1クラスの要素数と組み合わせリスト長"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1abed128be0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.clf()\n",
"plt.plot(list_len)\n",
"#plt.xlim(100, 6000)\n",
"#plt.ylim()\n",
"plt.xlabel(\"number of items\")\n",
"plt.ylabel(\"number of combinations list\")\n",
"plt.show()\n",
"# plt.savefig('./len of conbinations list.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1クラスの要素数と経過時間の関係 "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1ab9601ae80>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.clf()\n",
"plt.plot(e_time)\n",
"#plt.xlim(100, 6000)\n",
"#plt.ylim()\n",
"plt.xlabel(\"number of items\")\n",
"plt.ylabel(\"elapsed time\")\n",
"plt.show()\n",
"# plt.savefig('./elapsed time.png')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"### 6万個のデータ(6000データ*10クラス)から100個の組み合わせを求めたいとき上記のやり方だと,計算が終わらない...メモリも足りない...\n",
"### ⇒あらかじめ100個のデータをランダムに選んでx_aとし,そのクラスと同じデータをx_p,異なるクラスのデータをx_nとして取ってくる"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def fixed_conv(data, target, b_size):\n",
" \"\"\"\n",
" 無駄にすべての組み合わせを作らずにランダムに取ってきたデータx_aに対して,x_p, x_nを見繕う\n",
" 入力:データ群data(numpy.ndarray), dataの教師ラベルtarget(numpy.ndarray)\n",
" 出力:batchサイズのx_a(numpy.ndarray), x_p(numpy.ndarray), x_n(numpy.ndarray)を作成\n",
" \"\"\"\n",
" # データ群のクラス数を取得\n",
" n_class = len(list(set(target)))\n",
" # それぞれのクラスに属するデータ数をクラスごとに取得\n",
" nl_class = [len(np.where(target == c)[0]) for c in six.moves.range(n_class)]\n",
" # b_size個のランダムな値をもつリストを作成\n",
" indexes = np.random.permutation(len(target))[:b_size]\n",
" # それぞれのクラスにおいてb_sizeだけランダムな値(indexとして使う値)を取ってくる\n",
" classwise_batch = [list(np.random.permutation(np.where(target==c)[0])[:b_size]) for c in six.moves.range(n_class)]\n",
" # 元のリストから,それぞれのクラスのデータに対してランダムにb_size個だけ確保しておく\n",
" #classwise_batch = [[g for b in six.moves.range(b_size)] for g in classwise_gens]\n",
"\n",
" # batchサイズのx_aを作成\n",
" xa = data[indexes]\n",
" # x_aのそれぞれの要素のクラスを取得\n",
" #xa_targets = [target[idx] for idx in indexes]\n",
" xa_targets = target[indexes]\n",
"\n",
" # xaと同じクラスのデータをクラスと対応するclasswise_batchのインデックスにあるリストから1つpopしてきて\n",
" # batchサイズのtargetのインデックスのリストを作成して,そのリストを使ってx_pを作成\n",
" xp = data[[classwise_batch[t].pop() for t in xa_targets]]\n",
" # xaと異なるどれか1つのクラスを等しい確率で選択し,そのクラスと対応するclasswise_batchの\n",
" # インデックスにあるリストから1つpopしてきて,それをb_size個繰り返して,xnを作成する\n",
" xn = data[[classwise_batch[np.random.choice(\n",
" n_class,1,p=[1./(n_class-1) if c!=t else 0.0 for c in six.moves.range(n_class)])[0]].pop()\n",
" for t in xa_targets]]\n",
" return xa, xp, xn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 新しく作った関数の実行時間を確認"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"処理時間: 0.0008982292010841775\n",
"x_a len:10, x_p len:10, x_n len:10\n",
"x_a[:100]:[17 67 32 86 66 6 84 42 37 27],\n",
" x_p[:100]:[17 67 36 86 64 4 84 45 39 29],\n",
" x_n[:100]:[97 71 6 40 8 76 51 50 88 12]\n"
]
}
],
"source": [
"n_class = 10\n",
"n_items = 10\n",
"b_size = 10\n",
"data = np.arange(n_class*n_items)\n",
"target = np.asarray([i for i in six.moves.range(n_class) for j in six.moves.range(n_items)])\n",
"start_time = time.clock()\n",
"xa, xp, xn = fixed_conv(data, target, b_size)\n",
"print(\"処理時間:\", time.clock() - start_time)\n",
"print(\"x_a len:{}, x_p len:{}, x_n len:{}\".format(len(xa), len(xp), len(xn)))\n",
"print(\"x_a[:100]:{},\\n x_p[:100]:{},\\n x_n[:100]:{}\".format(xa[:100], xp[:100], xn[:100]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ニュータイプの処理の重さを確認"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1クラス中の要素数:100, 作成したリスト長:10, 処理時間:0.0015274250713446236\n",
"1クラス中の要素数:200, 作成したリスト長:10, 処理時間:0.001250305189842038\n",
"1クラス中の要素数:300, 作成したリスト長:10, 処理時間:0.0014051937428121164\n",
"1クラス中の要素数:400, 作成したリスト長:10, 処理時間:0.0017056402139132842\n",
"1クラス中の要素数:500, 作成したリスト長:10, 処理時間:0.0020175944687252922\n",
"1クラス中の要素数:600, 作成したリスト長:10, 処理時間:0.002324883405890432\n",
"1クラス中の要素数:700, 作成したリスト長:10, 処理時間:0.002648345445322775\n",
"1クラス中の要素数:800, 作成したリスト長:10, 処理時間:0.002789238044897502\n",
"1クラス中の要素数:900, 作成したリスト長:10, 処理時間:0.0029730515689152526\n",
"1クラス中の要素数:1000, 作成したリスト長:10, 処理時間:0.0032343093694180425\n"
]
}
],
"source": [
"n_class = 10\n",
"b_size = 10\n",
"\n",
"nlist_len = [0 for i in six.moves.range(10)]\n",
"ne_time = [0. for i in six.moves.range(10)]\n",
"for i in six.moves.range(1, 11, 1):\n",
" n_items = i * 100\n",
" data = np.arange(n_class*n_items)\n",
" target = np.asarray([i for i in six.moves.range(n_class) for j in six.moves.range(n_items)])\n",
" start_time = time.clock()\n",
" x_a, x_p, x_n = fixed_conv(data, target, b_size)\n",
" nlist_len[i-1] = len(x_a)\n",
" ne_time[i-1] = time.clock() - start_time\n",
" print(\"1クラス中の要素数:{}, 作成したリスト長:{}, 処理時間:{}\".format(n_items, nlist_len[i-1], ne_time[i-1]))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1ab962347b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.clf()\n",
"plt.plot(nlist_len)\n",
"#plt.xlim(100, 6000)\n",
"#plt.ylim()\n",
"plt.xlabel(\"number of items\")\n",
"plt.ylabel(\"number of combinations list\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAEPCAYAAABhkeIdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucneO5//HPN4hTm6SlmxJxKIq0GkFEEUNUiR+RNioo\nKd27aZyKblR1t5Fqt2qdVZU6hThEnEnSJBiHrZLIwSESQiNESCk5CZLMXL8/7mcYIzOzkqw1z5pZ\n3/frtV5Z65n7fta1hplr7rMiAjMzs2Jpl3cAZmbWtjixmJlZUTmxmJlZUTmxmJlZUTmxmJlZUTmx\nmJlZUZU8sUg6SNJMSS9LOruRMpdLmiVpmqRuzdWVNFTSs5KmShojadPs+paSlkqakj2uKvXnMzOz\nz1Ip17FIage8DPQG5gGTgAERMbNemYOBkyPiEEl7AJdFRM+m6kr6QkQsyeqfAuwUEYMlbQk8EBE7\nl+xDmZlZk0rdYukBzIqIORGxHLgd6NugTF9gGEBETAA6Stqkqbp1SSWzIVBb77VK8knMzKwgpU4s\nmwNv1Hs9N7tWSJkm60o6X9LrwNHAr+uV2yrrBntU0t5r/hHMzGxVlOPgfUEtjoj4VUR0AYYDp2SX\n3wK6RER34OfArZK+UJowzcxsZdYu8f3fBLrUe905u9awzBYrKdO+gLoAtwKjgCERsQxYBhARUyS9\nCmwPTKlfQZI3SDMzWw0R0ewf/6VusUwCts1ma7UHBgD3NyhzP3AcgKSewIKImN9UXUnb1qt/ODAj\nu75xNuiPpG2AbYF/riywiCi7x29+85vcY3BMjqkS43JMhT0KVdIWS0TUSDoZGEtKYtdFxAxJg9KX\n45qIGCWpj6RXgA+A45uqm936Aknbkwbt5wA/za73AoZKWpZ9bVBELCjlZzQzs88qdVcYETEG+HqD\na39t8PrkQutm1/s3Uv5u4O7VDtbMzNZYOQ7eV6yqqqq8Q/gcx1QYx1S4cozLMRVXSRdIlitJUYmf\n28xsTUgiymDw3szMKowTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUT\ni5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZFZUTi5mZNeujjwov\n68RiZmZNeuQR2Hnnwss7sZiZ2Uq9+y4MHAjHHw8XXVR4PScWMzP7jAi48Ubo2hU22gimT4dDDy28\n/toli8zMzFqdl16Cn/4UFi+G0aOhe/dVv4dbLGZmxscfw9ChsNde0LcvPP306iUVcIvFzKziPf44\nDBoE228PU6fCFlus2f2cWMzMKtR778FZZ8Hf/w6XXw6HHw7Smt/XXWFmZhUmAoYPT4PzG2yQBuf7\n9StOUgG3WMzMKsorr8DgwfDOO3DffdCjR/Hfwy0WM7MKsGwZ/P730LMnfPe78MwzpUkq4BaLmVmb\n93//lwbnt9wyJZSttirt+zmxmJm1Ue+/D+ecAw88AJdeCv37F28cpSnuCjMza2Mi4I470uB8u3Zp\ncP6II1omqYBbLGZmbcrs2XDiiTB3Ltx1F+y5Z8vH4BaLmVkbsHw5XHgh7L477LsvTJmST1IBt1jM\nzFq9CRPgJz+BTTeFiRNhm23yjceJxcyslVq4EM49N3V5XXQRHHVUy42jNKXkXWGSDpI0U9LLks5u\npMzlkmZJmiapW3N1JQ2V9KykqZLGSNq03tfOye41Q9KBpf10ZmYtLyIlk65d0+aR06fD0UeXR1IB\nUESU7uZSO+BloDcwD5gEDIiImfXKHAycHBGHSNoDuCwiejZVV9IXImJJVv8UYKeIGCxpJ2A4sDvQ\nGRgPbBcNPqSkhpfMzFqF11+Hk09OK+j/+lfYZ5+We29JRESz6avULZYewKyImBMRy4Hbgb4NyvQF\nhgFExASgo6RNmqpbl1QyGwK12fPDgNsjYkVEvAbMyu5jZtaqrVgBF1+ctrLv0QOmTWvZpLIqSj3G\nsjnwRr3Xc/n8L/qVldm8ubqSzgeOAxYA+9W71z/q1Xkzu2Zm1mpNnpwG5zt1gqeeStvbl7NyHLwv\nqJcwIn4F/CobezkFGLIqbzJkyKfFq6qqqKqqWpXqZmYlt3gx/M//wO23p6nExx7bsuMo1dXVVFdX\nr3K9UieWN4Eu9V53zq41LLPFSsq0L6AuwK3AQ6TE0ti9Pqd+YjEzKzf33QennAK9e8MLL8DGG7d8\nDA3/6D7vvPMKqlfqMZZJwLaStpTUHhgA3N+gzP2kLi0k9QQWRMT8pupK2rZe/cOBmfXuNUBSe0lb\nA9sCE0vz0czMiisiHbp14IHpAK5hw+CGG/JJKmuipC2WiKiRdDIwlpTErouIGZIGpS/HNRExSlIf\nSa8AHwDHN1U3u/UFkrYnDdrPAX6a1XlR0gjgRWA5cKKnf5lZufvwQ7jllrRR5Nprw+mnpzUp666b\nd2Srp6TTjcuVpxubWTl46y246iq45po00+v002G//cpnPUpD5TLd2MzMGpg2DQYOTAsc33sPnngi\nbW2///7lm1RWhROLmVkLqK2F++9PLZJDD4WddkqLHP/85/KfPryqynG6sZlZm7FkCdx4I1x2GXzp\nS6m7q39/WGedvCMrHScWM7MSeP11uOKKNKurqioll29/u210dTXHXWFmZkX09NNw5JGwyy5QUwOT\nJsHIkbDXXpWRVMAtFjOzNbZiBdx9N1xyCcyfD6eeCtdeCx065B1ZPpxYzMxW04IF8Le/pS6vLl3g\nzDOhb19Ya628I8uXE4uZ2Sp69dU0GH/LLXDwwelslN12yzuq8uExFjOzAkTAY4/B4YdDz56w4Ybw\n/PMwfLiTSkNusZiZNWHZsrS78KWXwtKlcNppKZlsuGHekZUvb+liZrYS774LV1+dtlzp2jWtPzno\nIGhXwf083tLFzGw1vPhiOlRru+1g9uy02/C4cdCnT2UnlVXhrjAzq3gRMHZsmi48bRoMHgwvvQT/\n8R95R9Y6ObGYWcV6912480648so0Rfj00+Hee2G99fKOrHVzYjGzivLee3DPPTBiRFolf9BBcPnl\nbWdn4XLgwXsza/MWLkwtkREj4Mkn4YAD0rYrhxzi2V2rotDBeycWM2uTFi1KZ5zccQdUV6cWyQ9+\nkLas/+IX846udXJiaYITi1nbtGQJPPhgapk8/DDss09qmRx2GHTsmHd0rZ8TSxOcWMzajqVLYdSo\n1DIZOxb23DMlk8MPT+efWPE4sTTBicWsdfvoIxgzJiWT0aNh991TN1e/frDxxnlH13Y5sTTBicWs\n9fn449QiGTEidXd165aSyfe/7/UmLcWJpQlOLGatw7JlaaxkxAi47760tcqRR6Zk8tWv5h1d5XFi\naYITi1n5WrECHn00dXPdey9sv31qmRxxBGy+ed7RVTYnliY4sZiVl5qatCX9iBHpJMattkotk/79\nYcst847O6hSaWLzy3sxyUVubFivecUc6KGuzzVIyefpp2GabvKOzNeHEYmYtprY2JY477oCRI9MM\nrh/8AJ54Iu0mbG2DE4uZtYinnoJjj4V1100tk/HjYccd847KSsGJxcxKKiLtHnz++fC3v6UtVaxt\nc2Ixs5JZsiQdmjVjBvzjHx47qRQ+D83MSmLmTNhjj3S2yVNPOalUEicWMyu6u+6CXr3SwVnXXw/r\n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\n1Hrp2rV4seXlww/TTgQ33ZR2Jfje91IX4D77gNZkyaqZtRkevG/CmiYWSLv3XnstnHtumjV25plp\n5XlrEpH29rrpprQ4dNddUzLp1w822CDv6Mys3DixNKEYiaXOnDnwX/+VZkvdcAN84xtFuW1JzZmT\nxkyGDUvrdwYOTItDt9ii+bpmVrk8xtJCttwS/v73tAp9v/3SGo9yHHtZsiQlkv33Ty2TefNScpkx\nIw3QO6mYWbG4xVJEr7+eWi///ndqvXzzm0V/i1VSWwuPPZa6uu67D/baK61FOfRQWHfdfGMzs9bH\nXWFNKFVigTRucf31ae+sn/0srdxfZ52SvFWjXnklJZObb4aOHVNX19FHp+OBzcxWlxNLE0qZWOq8\n8UZqvbzzTmq9lPrAq4ULYcSIlFBmzUqJZOBA6Nat+bpmZoVwYmlCSyQWSK2XG25IrZZTT02tmGK2\nXmpqYNy4lExGj4bevVMyOfjglm8lmVnb58TShJZKLHXmzk2tl/nz4cYb17z18uKLKZnccks6VGvg\nQBgwADbaqCjhmpmtlGeFlZHOnWHUKDjlFDjgABg6FJYvX7V7/PvfcOWVsPvu8J3vpGvjxqVt/k86\nyUnFzMqHWywtbO5cGDQoTfe98Ub41rcaL7t8eUpIN92UDiLr0ye1Tg44wNv4m1nLc1dYE/JMLJDG\nXoYNS6v1TzoprSNp3/7Tr02blpLJbbfBdtulZPKDH6QZXmZmeXFiaULeiaXOm2+m1svcuXDJJTBl\nSkooixbBccelx7bb5h2lmVnixNKEckkskFooN9+cxl323jstYOzVK221YmZWTpxYmlBOicXMrLXw\nrDAzM8uFE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZ\nmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRWVE4uZmRVVyROLpIMkzZT0sqSzGylzuaRZ\nkqZJ6tZcXUn9Jb0gqUZS9wb3Oie71wxJB5buk5mZ2cqUNLFIagdcCXwX6AocJWmHBmUOBr4WEdsB\ng4CrC6j7PNAPeKzBvXYEfgDsCBwMXCWp2dPOykV1dXXeIXyOYyqMYypcOcblmIqr1C2WHsCsiJgT\nEcuB24G+Dcr0BYYBRMQEoKOkTZqqGxEvRcQsoGHS6AvcHhErIuI1YFZ2n1ahHP9HckyFcUyFK8e4\n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\nBVSRi541IwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1ab96376080>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.clf()\n",
"plt.plot(ne_time)\n",
"#plt.xlim(100, 6000)\n",
"#plt.ylim()\n",
"plt.xlabel(\"number of items\")\n",
"plt.ylabel(\"elapsed time\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 新しく作った関数の方は,使用するデータセットのデータ数によらずほとんんど一定で早く組み合わせを作ることができた."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### n個のデータからbatch個のx_a, x_p, x_nの組み合わせを取り出すときは,\n",
"### 新しく作った関数のほうが格段に速い"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment