{"id":1217,"date":"2020-10-27T08:44:11","date_gmt":"2020-10-27T01:44:11","guid":{"rendered":"http:\/\/www.miai.vn\/?p=1217"},"modified":"2020-10-27T08:44:11","modified_gmt":"2020-10-27T01:44:11","slug":"flow-from-directory-thuoc-dac-tri-het-ram-tran-bo-nho-khi-train-model","status":"publish","type":"post","link":"https:\/\/miai.vn\/?p=1217","title":{"rendered":"&#8220;Flow from directory&#8221; &#8211; Thu\u1ed1c \u0111\u1eb7c tr\u1ecb h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model"},"content":{"rendered":"\n<p>Ch\u00e0o tu\u1ea7n m\u1edbi anh em M\u00ec AI, h\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.<\/p>\n\n\n\n<p>Th\u1eddi gian v\u1eeba qua m\u00ecnh g\u1eb7p m\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi c\u1ee7a c\u00e1c b\u1ea1n tr\u00ean Group trao \u0111\u1ed5i, chia s\u1ebb: <strong><a href=\"https:\/\/facebook.com\/groups\/miaigroup\">https:\/\/facebook.com\/groups\/miaigroup<\/a><\/strong> v\u1ec1 vi\u1ec7c b\u1ecb b\u00e1o h\u1ebft RAM khi train (tr\u00ean PC ho\u1eb7c Colab) c\u00e1c b\u00e0i to\u00e1n v\u1ec1 h\u00ecnh \u1ea3nh. Do \u0111\u00f3, \u0111\u1ec3 tr\u1ea3 l\u1eddi chung cho c\u00e1c b\u1ea1n th\u00ec m\u00ecnh vi\u1ebft b\u00e0i n\u00e0y lu\u00f4n.<\/p>\n\n\n\n<p>C\u00f9ng b\u1eaft \u0111\u1ea7u n\u00e0o?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 1 &#8211; V\u00ec sao khi train model b\u1ecb b\u00e1o thi\u1ebfu b\u1ed9 nh\u1edb (Out of Memory)?<\/h2>\n\n\n\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-5095883280136027\" data-ad-slot=\"7735063137\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>B\u1ed9 nh\u1edb \u1edf \u0111\u00e2y l\u00e0 m\u00ecnh n\u00f3i chung cho c\u1ea3 b\u1ed9 nh\u1edb RAM khi train b\u1eb1ng CPU v\u00e0 b\u1ed9 nh\u1edb VRAM c\u1ee7a GPU (c\u00e1i n\u00e0y c\u00f3 th\u1ec3 m\u00ecnh nh\u1edb kh\u00f4ng chu\u1ea9n, c\u00e1c b\u1ea1n c\u1ee9 h\u00ecnh dung l\u00e0 b\u1ed9 nh\u1edb c\u1ee7a GPU l\u00e0 okie).<\/p>\n\n\n\n<p>Khi train model ch\u00fang ta s\u1ebd hay g\u1eb7p vi\u1ec7c b\u00e1o tr\u00e0n b\u1ed9 nh\u1edb \u1edf b\u01b0\u1edbc load d\u1eef li\u1ec7u t\u1eeb \u1ed5 c\u1ee9ng v\u00e0o bi\u1ebfn X, y \u0111\u1ec3 chu\u1ea9n b\u1ecb train. <\/p>\n\n\n\n<p>L\u00fd do? B\u1ea1n c\u1ee9 h\u00ecnh dung nh\u01b0 n\u00e0y, m\u1ed9t t\u1ea5m \u1ea3nh c\u1ee7a b\u1ea1n ch\u1ee5p b\u00e2y gi\u1edd c\u0169ng t\u1ea7m 2MB r\u1ed3i (\u0111\u1ea5y l\u00e0 c\u00f2n \u00edt \u0111\u00f3). Trong khi train Deep Learning th\u00ec l\u1ea1i c\u1ea7n nhi\u1ec1u, th\u1eadt nhi\u1ec1u d\u1eef li\u1ec7u (t\u00ednh b\u1eb1ng \u0111\u01a1n v\u1ecb ngh\u00ecn \u1ea3nh) v\u00e0 \u0111i\u1ec1u g\u00ec \u0111\u1ebfn s\u1ebd \u0111\u1ebfn, \u0111\u00f3 l\u00e0&#8230;. h\u1ebft b\u1ed9 nh\u1edb.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif\" alt=\"\"\/><figcaption>Ngu\u1ed3n: <a href=\"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ea1i \u0111\u00e2y<\/a><\/figcaption><\/figure>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 c\u00e1c b\u1ea1n d\u1ec5 hi\u1ec3u, ta c\u00f3 10.000 \u1ea3nh , m\u1ed7i \u1ea3nh 2MB th\u00ec khi load \u0111\u1ee7 s\u1ed1 \u1ea3nh n\u00e0y v\u00e0o b\u1ed9 nh\u1edb s\u1ebd l\u00e0 10.000 x 2 = 20.000 MB = 19.5GB. V\u00e2ng, m\u01b0\u1eddi ch\u00edn Gigabyte v\u00e0 v\u1edbi l\u01b0\u1ee3ng b\u1ed9 nh\u1edb nh\u01b0 n\u00e0y th\u00ec PC h\u1ecdc t\u1eadp c\u1ee7a c\u00e1c b\u1ea1n v\u00e0 k\u1ec3 c\u1ea3 Colab c\u0169ng t\u00e8o ngay l\u1eadp t\u1ee9c.<\/p>\n\n\n\n<p>\u0110\u00f3 l\u00e0 l\u00fd do, b\u00e2y gi\u1edd ch\u00fang ta c\u00f9ng t\u00ecm gi\u1ea3i ph\u00e1p nh\u00e9!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 2 &#8211; C\u00e1ch gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 b\u1eb1ng Flow from directory<\/h2>\n\n\n\n<p>Suy ngh\u0129 ho\u00e0n to\u00e0n theo logic th\u00f4ng th\u01b0\u1eddng th\u00ec ch\u00fang ta c\u00f3 th\u1ec3 gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 tr\u00ean b\u1eb1ng c\u00e1ch chia nh\u1ecf d\u1eef li\u1ec7u ra v\u00e0 load t\u1eeb t\u1eeb v\u00e0o l\u00e0 xong. \u0110\u00fang! Chu\u1ea9n l\u00e0 nh\u01b0 th\u1ebf, trong Keras c\u00f3 m\u00f3n DataGenerator v\u00e0 model.fit_generator \u0111\u1ec3 ch\u00fang ta t\u1ef1 vi\u1ebft c\u00e1c h\u00e0m load d\u1eef li\u1ec7u v\u00e0 feed cho model m\u1ed9t c\u00e1ch tu\u1ea7n t\u1ef1.<\/p>\n\n\n\n<p>Tuy nhi\u00ean h\u00f4m nay \u0111\u1ec3 \u0111\u01a1n gi\u1ea3n m\u00ecnh xin ch\u1ec9 focus v\u00e0o m\u00f3n Flow from directory c\u00f2n c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 search v\u00e0 tri\u1ec3n khai c\u00e1c bi\u1ec7n ph\u00e1p custom h\u01a1n, can thi\u1ec7p s\u00e2u h\u01a1n v\u00e0o m\u00f3n feed d\u1eef li\u1ec7u qua DataGenerator nh\u00e9.<\/p>\n\n\n\n<p>C\u1ee5 th\u1ec3 h\u01a1n trong b\u00e0i n\u00e0y m\u00ecnh s\u1ebd focus v\u00e0o vi\u1ec7c d\u00f9ng flow from directory \u0111\u1ec3 load d\u1eef li\u1ec7u t\u1eeb c\u00e1c folder m\u1ed9t c\u00e1ch tu\u1ea7n t\u1ef1. R\u1ed3i , c\u00f9ng l\u00e0m n\u00e0o!<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">B\u01b0\u1edbc 1. Chu\u1ea9n b\u1ecb d\u1eef li\u1ec7u<\/h5>\n\n\n\n<p>\u0110\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi Deep Learning th\u00ec ph\u1ea3i c\u00f3 d\u1eef li\u1ec7u l\u00e0 ch\u1eafc r\u1ed3i. Gi\u1ea3 s\u1eed ch\u00fang ta train model ph\u00e2n lo\u1ea1i Ch\u00f3 v\u00e0 M\u00e8o \u0111i. Ch\u00fang ta s\u1ebd s\u1eed d\u1ee5ng DogCat data c\u1ee7a Kaggle lu\u00f4n (t\u1ea3i v\u1ec1 t\u1ea1i \u0111\u00e2y: https:\/\/www.kaggle.com\/c\/dogs-vs-cats\/data) .<\/p>\n\n\n\n<p>D\u1eef li\u1ec7u c\u1ee7a ch\u00fang ta s\u1ebd \u0111\u01b0\u1ee3c chia ra th\u00e0nh 3 folder: train, valid (validation) v\u00e0 test. Chi ti\u1ebft v\u1ec1 v\u00ec sao ph\u1ea3i chia nh\u01b0 n\u00e0y c\u00e1c b\u1ea1n xem t\u1ea1i <strong><a href=\"https:\/\/www.youtube.com\/watch?v=hPhnqTtidnA&amp;list=PLZPCoTKpEddAay-lItE-pn27uNNrApORH&amp;index=4\" target=\"_blank\" rel=\"noreferrer noopener\">clip n\u00e0y<\/a><\/strong>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/Screen%20Shot%202020-10-27%20at%2014.11.20.png?raw=true\" alt=\"flow from directory\"\/><\/figure>\n\n\n\n<p>Sau khi t\u1ea3i d\u1eef li\u1ec7u v\u1ec1 ch\u00fang ta s\u1ebd c\u00f3 2 folder train v\u00e0 test. Trong folder train ch\u1ee9a c\u1ea3 Dog (c\u00e1c file b\u1eaft \u0111\u1ea7u b\u1eb1ng dog.*) v\u00e0 Cat (c\u00e1c file b\u1eaft \u0111\u1ea7u b\u1eb1ng Cat.*). Gi\u1edd nhi\u1ec7m v\u1ee5 c\u1ee7a ch\u00fang ta l\u00e0 ph\u1ec9a chia th\u00e0nh c\u00e1c folder c\u00f3 c\u1ea5u tr\u00fac nh\u01b0 sau (valid \u0111\u01b0\u1ee3c l\u1ea5y ng\u1eabu nhi\u00ean t\u1ea7m 20% t\u1eeb file t\u1ed5ng s\u1ed1 file trong th\u01b0 m\u1ee5c Train) :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/Screen%20Shot%202020-10-27%20at%2014.04.17.png?raw=true\" alt=\"flow from directory\"\/><\/figure>\n\n\n\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-5095883280136027\" data-ad-slot=\"7735063137\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Ch\u00fang ta s\u1ebd s\u1eed d\u1ee5ng \u0111o\u1ea1n code sau (\u0111\u00e2y c\u00f3 th\u1ec3 ch\u01b0a l\u00e0 c\u00e1ch t\u1ed1i \u01b0u nh\u00e9):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from os import listdir\nimport os\nimport random\n\ndata_folder = \"data\/train\"\ntrain_folder = \"data\/train\"\nvalid_folder = \"data\/valid\"\n\ntry:\n    # T\u1ea1o th\u01b0 m\u1ee5c con cho train\n    os.mkdir(train_folder + \"\/dog\")\n    os.mkdir(train_folder + \"\/cat\")\n\n    # T\u1ea1o th\u01b0 m\u1ee5c valid v\u00e0 c\u00e1c th\u01b0 m\u1ee5c con\n    os.mkdir(valid_folder)\n    os.mkdir(valid_folder + \"\/dog\")\n    os.mkdir(valid_folder + \"\/cat\")\nexcept:\n    pass\n\n\nfor file in listdir(data_folder):\n    if os.path.isfile(data_folder + \"\/\" + file):\n        print(\"Process file \", file)\n        if random.random()>0.8:\n            print(\"Move to valid \", file)\n\n            # Cho v\u00e0o valid\n            dest_dir = file&#91;0:3]\n            os.rename(data_folder + \"\/\" + file, valid_folder + \"\/\" + dest_dir + \"\/\" + file)\n        else:\n            print(\"Move to train \", file)\n            dest_dir = file&#91;0:3]\n            os.rename(data_folder + \"\/\" + file, train_folder + \"\/\" + dest_dir + \"\/\" + file)<\/code><\/pre>\n\n\n\n<p>Sau khi ch\u1ea1y xong \u0111o\u1ea1n code th\u00ec 25,000 t\u1ea5m \u1ea3nh ch\u00f3 m\u00e8o \u0111\u00e3 \u0111\u01b0\u1ee3c chia ra ngon l\u00e0nh th\u00e0nh 20K \u1ea3nh (10K ch\u00f3 trong th\u01b0 m\u1ee5c dog, 10K m\u00e8o trong th\u01b0 m\u1ee5c cat) cho train v\u00e0 ph\u1ea7n c\u00f2n l\u1ea1i 5K cho valid.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/Screen%20Shot%202020-10-27%20at%2015.02.30.png?raw=true\" alt=\"flow from directory\"\/><\/figure>\n\n\n\n<p>B\u1ea1n n\u00e0o c\u00f2n th\u1eafc m\u1eafc v\u1ec1 c\u00e1ch chia d\u1eef li\u1ec7u th\u00ec post l\u00ean Group trao \u0111\u1ed5i, chia s\u1ebb: <strong><a href=\"https:\/\/facebook.com\/groups\/miaigroup\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/facebook.com\/groups\/miaigroup<\/a><\/strong> \u0111\u1ec3 c\u00f9ng th\u1ea3o lu\u1eadn nh\u00e9.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">B\u01b0\u1edbc 2. Vi\u1ebft code load d\u1eef li\u1ec7u \u0111\u1ec3 train model<\/h5>\n\n\n\n<p>N\u1ebfu nh\u01b0 tr\u01b0\u1edbc \u0111\u00e2y khi load d\u1eef li\u1ec7u ta load to\u00e0n b\u1ed9 d\u1eef li\u1ec7u v\u00e0o X, y sau \u0111\u00f3 d\u00f9ng train_test_split \u0111\u1ec3 chia ra train, valid v\u00e0 test ch\u1eb3ng h\u1ea1n. Th\u00ec b\u00e2y gi\u1edd ch\u00fang ta s\u1ebd s\u1eed d\u1ee5ng 3 b\u1ed9 ImageGenerator c\u1ee7a Keras \u0111\u1ec3 load d\u1eef li\u1ec7u.<\/p>\n\n\n\n<p>V\u1edbi b\u1ed9 d\u1eef li\u1ec7u train ta load nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Data generators\ntrain_datagen = ImageDataGenerator(\n      rescale=1.\/255,\n      rotation_range=40,\n      width_shift_range=0.2,\n      height_shift_range=0.2,\n      shear_range=0.2,\n      zoom_range=0.2,\n      horizontal_flip=True,\n      fill_mode='nearest')\n# Data flow\ntrain_generator = train_datagen.flow_from_directory(\n    directory=\"data\/train\/\",\n    target_size=(224, 224),\n    color_mode=\"rgb\",\n    batch_size=32,\n    label_mode=\"categorical\",\n    shuffle=True,\n    seed=42\n)<\/code><\/pre>\n\n\n\n<p>C\u00e1c b\u1ea1n ch\u00fa \u00fd c\u00e1c th\u00e0nh ph\u1ea7n sau:<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\"><strong>Ph\u1ea7n 1 l\u00e0 c\u00e1i m\u00f3n train_datagen<\/strong><\/span>. N\u00f3 ch\u00ednh l\u00e0 c\u00e1i ImageDataGenerator d\u00f9ng \u0111\u1ec3 Augment data m\u00ecnh \u0111\u00e3 n\u00f3i trong <strong><a href=\"https:\/\/www.miai.vn\/2019\/12\/24\/co-it-du-lieu-lam-sao-train-model-chuong-1-data-augment\/\" target=\"_blank\" rel=\"noreferrer noopener\">b\u00e0i n\u00e0y<\/a><\/strong>.  C\u00e1c b\u1ea1n \u0111\u1ecdc l\u1ea1i n\u1ebfu ch\u01b0a \u0111\u1ecdc nh\u00e9.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">Ph\u1ea7n 2 l\u00e0 c\u00e1i train_generator<\/span><\/strong>. N\u00f3 d\u00f9ng \u0111\u1ec3 load d\u1eef li\u1ec7u trong th\u01b0 m\u1ee5c train ra. C\u00e1c tham s\u1ed1 g\u1ed3m:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>directory: th\u01b0 m\u1ee5c ch\u1ee9a d\u1eef li\u1ec7u train<\/li><li>target_size: k\u00edch th\u01b0\u1edbc \u1ea3nh sau khi resize, c\u00e1i n\u00e0y c\u00e1c b\u1ea1n ch\u1ec9nh cho ph\u00f9 h\u1ee3p v\u1edbi model. \u1ede \u0111\u00e2y m\u00ecnh \u0111\u1ec3 224&#215;224 v\u00ec m\u00ecnh train VGG<\/li><li>color_mode: c\u00f3 2 gi\u00e1 tr\u1ecb ch\u00ednh l\u00e0 &#8220;grayscale&#8221; &#8211; \u1ea3nh \u0111\u1ea7u ra l\u00e0 \u1ea3nh x\u00e1m v\u00e0 &#8220;rgb&#8221; &#8211; \u1ea3nh \u0111\u1ea7u ra l\u00e0 \u1ea3nh m\u00e0u RGB<\/li><li>batch_size: c\u00e1i n\u00e0y quen thu\u1ed9c r\u1ed3i, m\u1ed7i l\u1ea7n l\u1ea5y bao nhi\u00eau \u1ea3nh \u0111\u1ec3 feed v\u00e0o model.<\/li><li>label_mode: c\u00e1i n\u00e0y n\u1ebfu nhi\u1ec1u l\u1edbp th\u00ec c\u1ee9 \u0111\u1ec3 l\u00e0 &#8220;categorical&#8221;. C\u00e1c nh\u00e3n s\u1ebd \u0111\u01b0\u1ee3c encode th\u00e0nh c\u00e1c categorical vector. N\u1ebfu \u0111\u1ec3 binary th\u00ec c\u00e1c nh\u00e3n s\u1ebd l\u00e0 c\u00e1c s\u1ed1 th\u1ef1c 0 v\u00e0 1.<\/li><li>shuffle: x\u00e1o tr\u1ed9n d\u1eef li\u1ec7u tr\u01b0\u1edbc khi load.<\/li><li>seed: L\u00e0 m\u1ed9t s\u1ed1 ng\u1eabu nhi\u00ean tu\u1ef3 ch\u1ecdn.<\/li><\/ul>\n\n\n\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-5095883280136027\" data-ad-slot=\"7735063137\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>T\u01b0\u01a1ng t\u1ef1 cho valid nh\u00e9:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valid_generator = valid_datagen.flow_from_directory(\n    directory=\"data\/valid\/\",\n    target_size=(224, 224),\n    color_mode=\"rgb\",\n    batch_size=32,\n    class_mode=\"categorical\",\n    shuffle=True,\n    seed=42\n)<\/code><\/pre>\n\n\n\n<p>Ch\u00fa \u00fd l\u00e0 v\u1edbi valid v\u00e0 test c\u00f3 th\u1ec3 kh\u00f4ng c\u1ea7n augment v\u00e0 ch\u1ec9 c\u1ea7n d\u00f9ng b\u1ed9 Generator \u0111\u01a1n gi\u1ea3n nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>valid_datagen = ImageDataGenerator(rescale=1.\/255)<\/code><\/pre>\n\n\n\n<p>Ri\u00eang v\u1edbi \u00f4ng test th\u00ec l\u1ea1i kh\u00e1c m\u1ed9t ch\u00fat, ch\u00fang ta s\u1eed d\u1ee5ng \u0111o\u1ea1n l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test_generator = test_datagen.flow_from_directory(\n    directory=\"data\/test\/\",\n    target_size=(224, 224),\n    color_mode=\"rgb\",\n    batch_size=1,\n    class_mode=None,\n    shuffle=False,\n    seed=42\n)<\/code><\/pre>\n\n\n\n<p>C\u00e1c b\u1ea1n \u0111\u1ec3 \u00fd s\u1ebd th\u1ea5y kh\u00e1c m\u1ea5y ch\u1ed7:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>batch_size = 1: Ch\u00fang ta l\u00e0m nh\u01b0 n\u00e0y \u0111\u1ec3 test t\u1eebng \u1ea3nh m\u1ed9t.<\/li><li>shuffle= False: Ch\u00fang ta kh\u00f4ng x\u00e1o tr\u1ed9n d\u1eef li\u1ec7u \u0111\u1ec3 c\u00f2n ti\u1ec7n map gi\u1eefa gi\u00e1 tr\u1ecb y th\u1ef1c v\u00e0 y d\u1ef1 \u0111o\u00e1n xem model ta chu\u1ea9n hay kh\u00f4ng?<\/li><\/ul>\n\n\n\n<p>Okie, v\u1eady \u0111\u1ee7 3 b\u1ed9 data generator r\u1ed3i, ch\u00fang ta train model th\u00f4i:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n_train_steps = train_generator.n\/\/train_generator.batch_size\nn_valid_steps = valid_generator.n\/\/valid_generator.batch_size\nmodel.fit_generator(generator=train_generator,\n                    steps_per_epoch=n_train_steps,\n                    validation_data=valid_generator,\n                    validation_steps=n_valid_steps,\n                    epochs=100\n)<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">B\u01b0\u1edbc 3. Predict th\u1eed xem model d\u01b0 l\u00e0o?<\/h5>\n\n\n\n<p>Train xong th\u00ec ta th\u1eed predict c\u00e1i n\u00e0o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n_test_steps = test_generator.n\ntest_generator.reset()\ny_pred = model.predict_generator(test_generator,\nsteps=n_test_steps,\nverbose=1)<\/code><\/pre>\n\n\n\n<p>V\u1eady l\u00e0 ch\u00fang at s\u1ebd c\u00f3 bi\u1ebfn y_pred ch\u1ee9a k\u1ebft qu\u1ea3 predict c\u1ee7a c\u1ea3 t\u1eadp test r\u1ed3i. Nhi\u1ec7m v\u1ee5 ti\u1ebfp theo l\u00e0 c\u00e1c b\u1ea1n so s\u00e1nh v\u1edbi ground truth ho\u1eb7c tr\u00edch xu\u1ea5t ra label th\u1ef1c l\u00e0 xong  r\u1ed3i \u0111\u00f3.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>y_pred = np.argmax(y_pred,axis=1)\nlabels = (train_generator.class_indices)\nlabels = dict((v,k) for k,v in labels.items())\ny_class = &#91;labels&#91;k] for k in y_pred]<\/code><\/pre>\n\n\n\n<p>Y_class s\u1ebd l\u00e0 m\u1ed9t list c\u00e1c nh\u00e3n theo \u0111\u00fang th\u1ee9 t\u1ef1 c\u1ee7a t\u1eadp test nh\u00e9.<\/p>\n\n\n\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-5095883280136027\" data-ad-slot=\"7735063137\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Okie nh\u01b0 v\u1eady m\u00ecnh \u0111\u00e3 guide c\u00e1c b\u1ea1n c\u00e1ch s\u1eed d\u1ee5n flow from directory \u0111\u1ec3 tr\u00e1nh \u0111\u01b0\u1ee3c tr\u00e0n b\u1ed9 nh\u1edb khi load d\u1eef li\u1ec7u v\u00e0 train model. H\u1eb9n g\u1eb7p l\u1ea1i c\u00e1c b\u1ea1n trong c\u00e1c b\u00e0i ti\u1ebfp theo nha!<\/p>\n\n\n\n<p>Ch\u00fac c\u00e1c b\u1ea1n th\u00e0nh c\u00f4ng!<\/p>\n\n\n\n<p><strong><em>H\u00e3y join c\u00f9ng c\u1ed9ng \u0111\u1ed3ng M\u00ec AI nh\u00e9!<\/em><\/strong><\/p>\n\n\n\n<p>Fanpage:&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/facebook.com\/miaiblog\" target=\"_blank\">http:\/\/facebook.com\/miaiblog<\/a><br>Group trao \u0111\u1ed5i, chia s\u1ebb:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.facebook.com\/groups\/miaigroup\" target=\"_blank\">https:\/\/www.facebook.com\/groups\/miaigroup<\/a><br>Website:&nbsp;<a href=\"https:\/\/miai.vn\/\">https:\/\/miai.vn\/<\/a><br>Youtube:&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/bit.ly\/miaiyoutube\" target=\"_blank\">http:\/\/bit.ly\/miaiyoutube<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ch\u00e0o tu\u1ea7n m\u1edbi anh em M\u00ec AI, h\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9. Th\u1eddi gian v\u1eeba qua m\u00ecnh g\u1eb7p m\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi c\u1ee7a c\u00e1c b\u1ea1n tr\u00ean Group trao \u0111\u1ed5i, chia s\u1ebb: https:\/\/facebook.com\/groups\/miaigroup [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[419,420,21,421,422,423,53],"class_list":["post-1217","post","type-post","status-publish","format-standard","hentry","category-basic","tag-chong-tran-ram","tag-data-from-dir","tag-deep-learning","tag-flow-data","tag-flow-from-directory","tag-load-by-batch","tag-train-model"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>&quot;Flow from directory&quot; - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI<\/title>\n<meta name=\"description\" content=\"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/miai.vn\/?p=1217\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"&quot;Flow from directory&quot; - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI\" \/>\n<meta property=\"og:description\" content=\"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/miai.vn\/?p=1217\" \/>\n<meta property=\"og:site_name\" content=\"M\u00ec AI\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-27T01:44:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif\" \/>\n<meta name=\"author\" content=\"Ch\u1ee7 ti\u1ec7m M\u00ec\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ch\u1ee7 ti\u1ec7m M\u00ec\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217\"},\"author\":{\"name\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/person\\\/cc8bc24bb90bd3f596add82f3a59948c\"},\"headline\":\"&#8220;Flow from directory&#8221; &#8211; Thu\u1ed1c \u0111\u1eb7c tr\u1ecb h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model\",\"datePublished\":\"2020-10-27T01:44:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217\"},\"wordCount\":1635,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teco.edu\\\/~albrecht\\\/neuro\\\/html\\\/img11.gif\",\"keywords\":[\"ch\u1ed1ng tr\u00e0n ram\",\"data from dir\",\"deep learning\",\"flow data\",\"flow from directory\",\"load by batch\",\"train model\"],\"articleSection\":[\"Basic\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/miai.vn\\\/?p=1217#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217\",\"url\":\"https:\\\/\\\/miai.vn\\\/?p=1217\",\"name\":\"\\\"Flow from directory\\\" - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teco.edu\\\/~albrecht\\\/neuro\\\/html\\\/img11.gif\",\"datePublished\":\"2020-10-27T01:44:11+00:00\",\"description\":\"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/miai.vn\\\/?p=1217\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#primaryimage\",\"url\":\"https:\\\/\\\/www.teco.edu\\\/~albrecht\\\/neuro\\\/html\\\/img11.gif\",\"contentUrl\":\"https:\\\/\\\/www.teco.edu\\\/~albrecht\\\/neuro\\\/html\\\/img11.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=1217#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/miai.vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"&#8220;Flow from directory&#8221; &#8211; Thu\u1ed1c \u0111\u1eb7c tr\u1ecb h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#website\",\"url\":\"https:\\\/\\\/miai.vn\\\/\",\"name\":\"M\u00ec AI\",\"description\":\"H\u1ecdc AI theo c\u00e1ch M\u00ec \u0103n li\u1ec1n!\",\"publisher\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/miai.vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\",\"name\":\"M\u00ec AI\",\"url\":\"https:\\\/\\\/miai.vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/miai.vn\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Logo_w_slogan.png\",\"contentUrl\":\"https:\\\/\\\/miai.vn\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Logo_w_slogan.png\",\"width\":240,\"height\":193,\"caption\":\"M\u00ec AI\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/person\\\/cc8bc24bb90bd3f596add82f3a59948c\",\"name\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"caption\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\"},\"sameAs\":[\"https:\\\/\\\/miai.vn\"],\"url\":\"https:\\\/\\\/miai.vn\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\"Flow from directory\" - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI","description":"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/miai.vn\/?p=1217","og_locale":"en_US","og_type":"article","og_title":"\"Flow from directory\" - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI","og_description":"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.","og_url":"https:\/\/miai.vn\/?p=1217","og_site_name":"M\u00ec AI","article_published_time":"2020-10-27T01:44:11+00:00","og_image":[{"url":"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif","type":"","width":"","height":""}],"author":"Ch\u1ee7 ti\u1ec7m M\u00ec","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ch\u1ee7 ti\u1ec7m M\u00ec","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/miai.vn\/?p=1217#article","isPartOf":{"@id":"https:\/\/miai.vn\/?p=1217"},"author":{"name":"Ch\u1ee7 ti\u1ec7m M\u00ec","@id":"https:\/\/miai.vn\/#\/schema\/person\/cc8bc24bb90bd3f596add82f3a59948c"},"headline":"&#8220;Flow from directory&#8221; &#8211; Thu\u1ed1c \u0111\u1eb7c tr\u1ecb h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model","datePublished":"2020-10-27T01:44:11+00:00","mainEntityOfPage":{"@id":"https:\/\/miai.vn\/?p=1217"},"wordCount":1635,"commentCount":4,"publisher":{"@id":"https:\/\/miai.vn\/#organization"},"image":{"@id":"https:\/\/miai.vn\/?p=1217#primaryimage"},"thumbnailUrl":"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif","keywords":["ch\u1ed1ng tr\u00e0n ram","data from dir","deep learning","flow data","flow from directory","load by batch","train model"],"articleSection":["Basic"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/miai.vn\/?p=1217#respond"]}]},{"@type":"WebPage","@id":"https:\/\/miai.vn\/?p=1217","url":"https:\/\/miai.vn\/?p=1217","name":"\"Flow from directory\" - Thu\u1ed1c \u0111\u1eb7c tr\u1ecb tr\u00e0n b\u1ed9 nh\u1edb khi train model - M\u00ec AI","isPartOf":{"@id":"https:\/\/miai.vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/miai.vn\/?p=1217#primaryimage"},"image":{"@id":"https:\/\/miai.vn\/?p=1217#primaryimage"},"thumbnailUrl":"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif","datePublished":"2020-10-27T01:44:11+00:00","description":"H\u00f4m nay ch\u00fang ta s\u1ebd c\u00f9ng nhau t\u00ecm hi\u1ec3u m\u00f3n Flow from directory, m\u1ed9t chi\u00eau th\u1ee9c \u0111\u1eb7c tr\u1ecb b\u1ec7nh h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model nh\u00e9.","breadcrumb":{"@id":"https:\/\/miai.vn\/?p=1217#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/miai.vn\/?p=1217"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/miai.vn\/?p=1217#primaryimage","url":"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif","contentUrl":"https:\/\/www.teco.edu\/~albrecht\/neuro\/html\/img11.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/miai.vn\/?p=1217#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/miai.vn\/"},{"@type":"ListItem","position":2,"name":"&#8220;Flow from directory&#8221; &#8211; Thu\u1ed1c \u0111\u1eb7c tr\u1ecb h\u1ebft RAM, tr\u00e0n b\u1ed9 nh\u1edb khi train model"}]},{"@type":"WebSite","@id":"https:\/\/miai.vn\/#website","url":"https:\/\/miai.vn\/","name":"M\u00ec AI","description":"H\u1ecdc AI theo c\u00e1ch M\u00ec \u0103n li\u1ec1n!","publisher":{"@id":"https:\/\/miai.vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/miai.vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/miai.vn\/#organization","name":"M\u00ec AI","url":"https:\/\/miai.vn\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/miai.vn\/#\/schema\/logo\/image\/","url":"https:\/\/miai.vn\/wp-content\/uploads\/2026\/05\/cropped-Logo_w_slogan.png","contentUrl":"https:\/\/miai.vn\/wp-content\/uploads\/2026\/05\/cropped-Logo_w_slogan.png","width":240,"height":193,"caption":"M\u00ec AI"},"image":{"@id":"https:\/\/miai.vn\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/miai.vn\/#\/schema\/person\/cc8bc24bb90bd3f596add82f3a59948c","name":"Ch\u1ee7 ti\u1ec7m M\u00ec","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","caption":"Ch\u1ee7 ti\u1ec7m M\u00ec"},"sameAs":["https:\/\/miai.vn"],"url":"https:\/\/miai.vn\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts\/1217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1217"}],"version-history":[{"count":0,"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts\/1217\/revisions"}],"wp:attachment":[{"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}