{"id":156,"date":"2014-07-08T22:14:00","date_gmt":"2014-07-08T13:14:00","guid":{"rendered":"https:\/\/www.dogrow.net\/nnet\/?p=156"},"modified":"2025-06-11T22:50:19","modified_gmt":"2025-06-11T13:50:19","slug":"blog12","status":"publish","type":"post","link":"https:\/\/www.dogrow.net\/nnet\/blog12\/","title":{"rendered":"(12) cuda-convnet\u7528MNIST\u30c7\u30fc\u30bf\u3092\u4f5c\u308b(\u305d\u306e2)"},"content":{"rendered":"<p><a href=\"https:\/\/www.dogrow.net\/nnet\/blog11\/\">(11) cuda-convnet\u7528MNIST\u30c7\u30fc\u30bf\u3092\u4f5c\u308b(\u305d\u306e1)<\/a> \u3067\u306fMNIST\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092 python\u3067\u30ed\u30fc\u30c9\u3059\u308b\u624b\u9806\u3092\u78ba\u8a8d\u3057\u305f\u3002\u4eca\u56de\u306f\u30ed\u30fc\u30c9\u3057\u305f\u30c7\u30fc\u30bf\u304b\u3089 cuda-convnet\u7528 <span class=\"my_fc_deeppinkB\">batches.meta <\/span>\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u307f\u308b\u3002<\/p>\n<p>cifar10\u306e batches.meta \u306e\u4e2d\u8eab\u306f\u3053\u3093\u306a\u611f\u3058\u3002<\/p>\n<pre>&gt;&gt;&gt; import cPickle as cp\r\n&gt;&gt;&gt; meta = cp.load(open('batches.meta'))\r\n&gt;&gt;&gt; meta.keys()\r\n['num_cases_per_batch', 'label_names', 'num_vis', 'data_mean']\r\n&gt;&gt;&gt; meta['num_cases_per_batch']\r\n10000\r\n&gt;&gt;&gt; meta['label_names']\r\n['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\r\n&gt;&gt;&gt; meta['num_vis']\r\n3072\r\n&gt;&gt;&gt; meta['data_mean']\r\narray([[ 134.45458984],\r\n       [ 134.22865295],\r\n       [ 134.84976196],\r\n       ...,\r\n       [ 115.09417725],\r\n       [ 115.32595062],\r\n       [ 115.7903595 ]], dtype=float32)\r\n&gt;&gt;&gt; meta['data_mean'].size\r\n3072\r\n&gt;&gt;&gt; im['data_mean'].ndim\r\n2\r\n<\/pre>\n<p>batches.meta\u306e\u4e2d\u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u30c7\u30fc\u30bf\u306f4\u7a2e\u985e\u3042\u308b\u3002<br \/>\n1) <span class=\"my_fc_deeppinkB\">num_cases_per_batch<\/span> : 1\u30d0\u30c3\u30c1\u306e\u753b\u50cf\u30c7\u30fc\u30bf\u6570<br \/>\n2) <span class=\"my_fc_deeppinkB\">label_names<\/span> : \u30e9\u30d9\u30eb\u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8<br \/>\n3) <span class=\"my_fc_deeppinkB\">num_vis<\/span> : 1\u753b\u50cf\u306e\u30c7\u30fc\u30bf\u6570(\uff1d\u30d4\u30af\u30bb\u30eb\u6570\u00d7\u30c1\u30e3\u30cd\u30eb\u6570)<br \/>\n4) <span class=\"my_fc_deeppinkB\">data_mean<\/span> : \u5168\u753b\u50cf\u306e\u30d4\u30af\u30bb\u30eb\u00d7\u30c1\u30e3\u30cd\u30eb\u3054\u3068\u306e\u5e73\u5747\u5024<\/p>\n<p>\u4f5c\u6210\u3057\u305f batches.meta\u4f5c\u6210\u95a2\u6570\u306f\u3053\u3061\u3089\u3002<br \/>\n<span class=\"my_fc_gray\">\u62d9\u3044Python\u30b9\u30ad\u30eb\u3067\u8a66\u884c\u932f\u8aa4\u3057\u306a\u304c\u3089\u66f8\u3044\u305f\u306e\u3067\u7121\u99c4\u304c\u3044\u3063\u3071\u3044\u3042\u308b\u304b\u3082&#8230;<\/span><\/p>\n<pre>def make_batches_meta( trainDataFilePath, nDataPerBatch ):\r\n    infile = open( trainDataFilePath, 'rb' )\r\n    header = infile.read( 4 * 4 )\r\n    header_up = struct.unpack('&gt;4i', header)   # &gt; : big endian, 4i: 4 x int(32bit)\r\n    nImg  = header_up[1]\r\n    img_w = header_up[2]\r\n    img_h = header_up[3]\r\n    nPixelsOf1img = img_w * img_h\r\n\r\n    print '# of image             : %d' % nImg\r\n    print 'image width            : %d' % img_w\r\n    print 'image height           : %d' % img_h\r\n    print '# of pixels in a image : %d' % nPixelsOf1img\r\n\r\n    <span class=\"my_fc_green\"># calculate average<\/span>\r\n    meanData = np.zeros(nPixelsOf1img, dtype=np.float32)\r\n    for i in range(0,nImg):\r\n        data = infile.read( nPixelsOf1img )\r\n        fmt  = '%dB' % nPixelsOf1img\r\n        data_up = struct.unpack(fmt, data)\r\n        meanData = meanData + data_up\r\n    meanData = meanData \/ nImg\r\n    meanData = np.float32(meanData.reshape((nPixelsOf1img,1)))\r\n    infile.close()\r\n\r\n    <span class=\"my_fc_green\"># save batches.meta<\/span>\r\n    label_names = ['0','1','2','3','4','5','6','7','8','9']\r\n    num_vis     = img_w * img_h\r\n    meanData = np.reshape(meanData, (img_w, img_h))\r\n    #meanData = meanData.swapaxes(0,1)\r\n    meanData = meanData.T.flatten('C')\r\n    meanData = np.reshape(meanData,(nPixelsOf1img,1))\r\n    dic = {'num_cases_per_batch':nDataPerBatch, 'label_names':label_names, 'num_vis':num_vis, 'data_mean':meanData}\r\n    fp = open('.\/batches.meta','w+')\r\n    cp.dump( dic, fp )\r\n    fp.close()\r\n<\/pre>\n<p>\u4f5c\u6210\u3057\u305f batches.meta \u3092\u78ba\u8a8d\u3057\u3066\u307f\u308b\u3002<\/p>\n<pre>[user@linux]$ python\r\n&gt;&gt;&gt; import cPickle as cp\r\n&gt;&gt;&gt; im = cp.load(open('batches.meta'))\r\n&gt;&gt;&gt; im\r\n{'num_cases_per_batch': 10000, 'label_names': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], 'num_vis': 784, 'data_mean': array([[  0.00000000e+00],\r\n       [  0.00000000e+00],\r\n       [  0.00000000e+00],\r\n       ...,\r\n       [  0.00000000e+00],\r\n       [  0.00000000e+00],\r\n       [  0.00000000e+00]], dtype=float32)}\r\n<\/pre>\n<p><span class=\"my_fc_blueBBig\">OK\u305d\u3046\u3060\uff01<\/span><\/p>\n<p><a href=\"https:\/\/www.dogrow.net\/nnet\/blog13\/\">\u6b21\u56de\u300c(13) cuda-convnet\u7528MNIST\u30c7\u30fc\u30bf\u3092\u4f5c\u308b(\u305d\u306e3)\u300d\u3067\u306f\u3001\u5b66\u7fd2\u30c7\u30fc\u30bf\u3001\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u305d\u306e\u3082\u306e\u3092\u683c\u7d0d\u3059\u308b data_batch_n \u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002<\/a><\/p>\n<hr class=\"my_hr_bottom\">\n","protected":false},"excerpt":{"rendered":"<p>(11) cuda-convnet\u7528MNIST\u30c7\u30fc\u30bf\u3092\u4f5c\u308b(\u305d\u306e1) \u3067\u306fMNIST\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092 python\u3067\u30ed\u30fc\u30c9\u3059\u308b\u624b\u9806\u3092\u78ba\u8a8d\u3057\u305f\u3002\u4eca\u56de\u306f\u30ed\u30fc\u30c9\u3057\u305f\u30c7\u30fc\u30bf\u304b\u3089 cuda-convnet\u7528 batches.met\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.dogrow.net\/nnet\/blog12\/\">\u7d9a\u304d\u3092\u8aad\u3080 &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,10,18,2],"tags":[],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-cuda","category-cuda-convnet","category-mnist","category-2"],"views":3467,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":25,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":2544,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/posts\/156\/revisions\/2544"}],"wp:attachment":[{"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dogrow.net\/nnet\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}