|
73 | 73 | "outputs": [],
|
74 | 74 | "source": [
|
75 | 75 | "# info of data\n",
|
76 |
| - "# if you want to retrieve the shape of certain feature, add the shape as extra feature, but do not name it as feature0_shape,\n", |
77 |
| - "# otherwise, feature0_shape will be used to reshape feature0 by tfr.parser()\n", |
78 |
| - "\n", |
79 |
| - "df = pd.DataFrame({'name':['image','label','shape_image'],\n", |
| 76 | + "df = pd.DataFrame({'name':['image','label','image_shape'],\n", |
80 | 77 | " 'type':['float32','int64','int64'],\n",
|
81 |
| - " 'shape':[(28,28,1),(),(3,)],\n", |
| 78 | + " 'shape':[(784,),(),(3,)],\n", |
82 | 79 | " 'isbyte':[False,False,False],\n",
|
83 |
| - " \"length_type\":['fixed','fixed','fixed'],\n", |
84 |
| - " \"default\":[np.NaN,np.NaN,np.NaN]})" |
| 80 | + " \"length_type\":['var','fixed','fixed'],\n", |
| 81 | + " \"default\":[np.NaN,np.NaN,np.NaN]})\n", |
| 82 | + "'''\n", |
| 83 | + "Note:\n", |
| 84 | + "1. if the shape of particular feature for every example in your dataset varies, then you must set \"length_type\" as 'var'\n", |
| 85 | + " example: 'image' feature for the first example is 28x28; but for the second example is 64x64\n", |
| 86 | + "2. 'image_shape' decides the final shape of 'image'\n", |
| 87 | + " example: the shape of 'image' is 784 when you write the tfrecord file, but the final shape after parsing is reshaped by the value of 'image_shape'\n", |
| 88 | + "3. by default, '_shape' info will not be returned after parsing, \n", |
| 89 | + " if you want to keep '_shape' info, please use: tfr = TFrecorder(retrieve_shape=True)\n", |
| 90 | + "'''" |
85 | 91 | ]
|
86 | 92 | },
|
87 | 93 | {
|
|
123 | 129 | " <th>0</th>\n",
|
124 | 130 | " <td>NaN</td>\n",
|
125 | 131 | " <td>False</td>\n",
|
126 |
| - " <td>fixed</td>\n", |
| 132 | + " <td>var</td>\n", |
127 | 133 | " <td>image</td>\n",
|
128 |
| - " <td>(28, 28, 1)</td>\n", |
| 134 | + " <td>(784,)</td>\n", |
129 | 135 | " <td>float32</td>\n",
|
130 | 136 | " </tr>\n",
|
131 | 137 | " <tr>\n",
|
|
142 | 148 | " <td>NaN</td>\n",
|
143 | 149 | " <td>False</td>\n",
|
144 | 150 | " <td>fixed</td>\n",
|
145 |
| - " <td>shape_image</td>\n", |
| 151 | + " <td>image_shape</td>\n", |
146 | 152 | " <td>(3,)</td>\n",
|
147 | 153 | " <td>int64</td>\n",
|
148 | 154 | " </tr>\n",
|
|
151 | 157 | "</div>"
|
152 | 158 | ],
|
153 | 159 | "text/plain": [
|
154 |
| - " default isbyte length_type name shape type\n", |
155 |
| - "0 NaN False fixed image (28, 28, 1) float32\n", |
156 |
| - "1 NaN False fixed label () int64\n", |
157 |
| - "2 NaN False fixed shape_image (3,) int64" |
| 160 | + " default isbyte length_type name shape type\n", |
| 161 | + "0 NaN False var image (784,) float32\n", |
| 162 | + "1 NaN False fixed label () int64\n", |
| 163 | + "2 NaN False fixed image_shape (3,) int64" |
158 | 164 | ]
|
159 | 165 | },
|
160 | 166 | "execution_count": 4,
|
|
232 | 238 | "for i in np.arange(dataset.num_examples):\n",
|
233 | 239 | " features = {}\n",
|
234 | 240 | " # write image of one example\n",
|
235 |
| - " tfr.feature_writer(df.iloc[0], dataset.images[i].reshape((28,28,1)), features)\n", |
| 241 | + " tfr.feature_writer(df.iloc[0], dataset.images[i], features)\n", |
236 | 242 | " # write label of one example\n",
|
237 | 243 | " tfr.feature_writer(df.iloc[1], dataset.labels[i], features)\n",
|
238 | 244 | " # ******************\n",
|
|
283 | 289 | " # 要写到tfrecord文件中的字典\n",
|
284 | 290 | " features = {}\n",
|
285 | 291 | " # 写一个样本的图片信息存到字典features中\n",
|
286 |
| - " tfr.feature_writer(df.iloc[0], dataset.images[i].reshape((28,28,1)), features)\n", |
| 292 | + " tfr.feature_writer(df.iloc[0], dataset.images[i], features)\n", |
287 | 293 | " # 写一个样本的标签信息存到字典features中\n",
|
288 | 294 | " tfr.feature_writer(df.iloc[1], dataset.labels[i], features)\n",
|
289 | 295 | " # ******************\n",
|
|
320 | 326 | "metadata": {},
|
321 | 327 | "outputs": [],
|
322 | 328 | "source": [
|
323 |
| - "tfr = TFrecorder()\n", |
| 329 | + "tfr = TFrecorder(retrieve_shape=True)\n", |
324 | 330 | "def input_fn_maker(path, data_info_path, shuffle=False, batch_size = 1, epoch = 1, padding = None):\n",
|
325 | 331 | " def input_fn():\n",
|
326 | 332 | " filenames = tfr.get_filenames(path=path, shuffle=shuffle)\n",
|
|
345 | 351 | }
|
346 | 352 | ],
|
347 | 353 | "source": [
|
348 |
| - "padding_info = ({'image':[28,28,1],'label':[],'shape_image':[None]})\n", |
| 354 | + "padding_info = ({'image':[28,28,1],'label':[],'image_shape':[None]})\n", |
349 | 355 | "test_input_fn = input_fn_maker('mnist_tfrecord/test/', 'mnist_tfrecord/data_info.csv',\n",
|
350 | 356 | " padding = padding_info)\n",
|
351 | 357 | "train_input_fn = input_fn_maker('mnist_tfrecord/train/', 'mnist_tfrecord/data_info.csv', shuffle=True, batch_size = 512,\n",
|
|
370 | 376 | {
|
371 | 377 | "data": {
|
372 | 378 | "text/plain": [
|
373 |
| - "<matplotlib.image.AxesImage at 0x7ff2ec946400>" |
| 379 | + "<matplotlib.image.AxesImage at 0x7f794a8a0e48>" |
374 | 380 | ]
|
375 | 381 | },
|
376 | 382 | "execution_count": 12,
|
|
381 | 387 | "data": {
|
382 | 388 | "image/png": "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\n",
|
383 | 389 | "text/plain": [
|
384 |
| - "<matplotlib.figure.Figure at 0x7ff2eca4bdd8>" |
| 390 | + "<matplotlib.figure.Figure at 0x7f794a988dd8>" |
385 | 391 | ]
|
386 | 392 | },
|
387 | 393 | "metadata": {},
|
|
390 | 396 | ],
|
391 | 397 | "source": [
|
392 | 398 | "sess =tf.InteractiveSession()\n",
|
393 |
| - "exmaple_image, exmaple_label, exmaple_shape_image = sess.run([test_inputs['image'],test_inputs['label'],test_inputs['shape_image']])\n", |
| 399 | + "exmaple_image, exmaple_label, exmaple_shape_image = sess.run([test_inputs['image'],test_inputs['label'],test_inputs['image_shape']])\n", |
394 | 400 | "print(exmaple_image.shape, exmaple_label, exmaple_shape_image)\n",
|
395 | 401 | "plt.imshow(exmaple_image.reshape((28,28)),cmap=plt.cm.gray)"
|
396 | 402 | ]
|
|
0 commit comments