{"id":4224,"date":"2020-11-07T23:13:26","date_gmt":"2020-11-07T14:13:26","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=4224"},"modified":"2020-11-07T23:16:04","modified_gmt":"2020-11-07T14:16:04","slug":"keras-rl2","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/keras-rl2\/","title":{"rendered":"keras-rl2"},"content":{"rendered":"\n<p>\ub204\uad70\uac00 \uc5f4\uc2ec\ud788 \uac1c\ubc1c\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uac1c\ubc1c\ud588\ub2e4\uba74, \ub0b4\uac00 \ucc98\uc74c \ucf54\ub4dc\ub97c \ub9cc\ub4e0\ub2e4\uba74 \ud560\ub9cc\ud558\ub2e4. \uadf8\ub7ec\ub098 \uc778\ud130\ub137\uc5d0 \uc2dc\uac04\uc774 \ub0a8\uc544\ub3c4\ub294 \uc778\uac04\uc774 \ub9ce\uace0 \uadf8\ub4e4\uc744 \ub2e4 \uc81c\uce58\uace0 \ub0b4\uac00 \ucc98\uc74c\uc774 \uc544\ub2cc \ud655\ub960\uc774 \uc0c1\ub2f9\ud788 \ud06c\ub2e4. \ub204\uad70\uac00 \ub9cc\ub4e0 \uace0\uae09\uc9c4 \ucf54\ub4dc\ub97c \ucda9\ubd84\ud558\uac8c \ucc3e\uc544 \ubcfc \ud544\uc694\uac00 \uc788\uace0, \ub9cc\uc57d \uc788\ub2e4\uba74 \ub2e4\uc2dc \ud560 \ud544\uc694\ub294 \uc5c6\ub2e4. \ub2e4\uc2dc\ud574\ub3c4 \uadf8 \uc131\ub2a5\uc744 \ub118\uc5b4\uc124 \uc218 \uc5c6\ub2e4. \ucc3e\uc544\ubcf4\ub2c8 \uac15\ud654\ud559\uc2b5\uc744 \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 keras-rl\uc744 \ucc3e\uc558\ub2e4. 2.0 \ubc84\uc804\uc5d0 \ub9de\ub3c4\ub85d \uad6c\ud604\ub41c keras-rl2\ub97c \uc124\uce58\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">python -m pip install keras-rl2<\/pre>\n\n\n\n<p>\uc0ac\uc6a9\uc790\ub294 \uac01\uc790\uc5d0 \ud544\uc694\ud55c \ud658\uacbd\uc744 \uc124\uc815\ud558\uba74 \ub41c\ub2e4. \uc0ac\uc6a9\uc790\uac00 \uc774 \ubd80\ubd84\uc5d0\uc11c \uc0bd\uc9c8\ud574\uc57c \ud558\uace0, \uac00\uce58 \uc788\ub2e4. opanai-gym\uc740 \uc778\uacf5\uc9c0\ub2a5 \uc54c\uace0\ub9ac\uc998\uc744 \uc27d\uac8c \uac1c\ubc1c\ud558\uae30 \uc704\ud574 \uc124\uc815\ud55c \ud658\uacbd\uc774\uace0, keras-rl\uc740 \ub204\uad70\uac00 \uac1c\ubc1c\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uc27d\uac8c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \ubc29\ubc95\uc774\ub2e4. \uac01\uc790 \ud658\uacbd\uc744 openai-gym \ud615\uc2dd\uc5d0 \ub9de\ucdb0 \ub123\uc73c\uba74 \ub41c\ub2e4. \ub2e4\uc74c tutorial\uc744 \ubcf4\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p>dqn, a2c \ub4f1 \uc720\uba85\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uad6c\ud604\ud588\ub2e4. \ub0b4\uac00 \ud544\uc694\ud55c a3c\uc744 \uad6c\ud604\ud560 \ub54c \uae4c\uc9c0 \uae30\ub2e4\ub9ac\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/pypi.org\/project\/keras-rl2\/#files\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/towardsdatascience.com\/openai-gym-from-scratch-619e39af121f\n<\/div><\/figure>\n\n\n\n<p>\ud29c\ud1a0\ub9ac\uc5bc\uc744 \ub3cc\ub9ac\uba74 \uc5d0\ub7ec\ub09c\ub2e4. display\uac00 \uc81c\ub300\ub85c \uc124\uc815\ub418\uc9c0 \uc54a\uc558\ub2e4. \ub0b4\uac00 \ud544\uc694\ud55c \ud658\uacbd\uc5d0\uc11c\ub294 \uad73\uc774 display\uac00 \ud544\uc694\uc5c6\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">tf-docker \/home\/mnt\/keras-rl > python test.py \n2020-11-07 23:00:09.425948: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\nModel: \"sequential\"\n_________________________________________________________________\nLayer (type)                 Output Shape              Param #   \n=================================================================\nflatten (Flatten)            (None, 4)                 0         \n_________________________________________________________________\ndense (Dense)                (None, 16)                80        \n_________________________________________________________________\nactivation (Activation)      (None, 16)                0         \n_________________________________________________________________\ndense_1 (Dense)              (None, 16)                272       \n_________________________________________________________________\nactivation_1 (Activation)    (None, 16)                0         \n_________________________________________________________________\ndense_2 (Dense)              (None, 16)                272       \n_________________________________________________________________\nactivation_2 (Activation)    (None, 16)                0         \n_________________________________________________________________\ndense_3 (Dense)              (None, 2)                 34        \n_________________________________________________________________\nactivation_3 (Activation)    (None, 2)                 0         \n=================================================================\nTotal params: 658\nTrainable params: 658\nNon-trainable params: 0\n_________________________________________________________________\nNone\n2020-11-07 23:00:10.496021: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcuda.so.1\n2020-11-07 23:00:10.510795: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.511178: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1716] Found device 0 with properties: \npciBusID: 0000:26:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1\ncoreClock: 1.7085GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB\/s\n2020-11-07 23:00:10.511203: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\n2020-11-07 23:00:10.512417: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10\n2020-11-07 23:00:10.513603: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcufft.so.10\n2020-11-07 23:00:10.513800: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcurand.so.10\n2020-11-07 23:00:10.515074: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcusolver.so.10\n2020-11-07 23:00:10.515803: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcusparse.so.10\n2020-11-07 23:00:10.518627: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudnn.so.7\n2020-11-07 23:00:10.518842: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.519243: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.519566: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1858] Adding visible gpu devices: 0\n2020-11-07 23:00:10.519919: I tensorflow\/core\/platform\/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations:  AVX2 FMA\nTo enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n2020-11-07 23:00:10.542963: I tensorflow\/core\/platform\/profile_utils\/cpu_utils.cc:104] CPU Frequency: 3399500000 Hz\n2020-11-07 23:00:10.543724: I tensorflow\/compiler\/xla\/service\/service.cc:168] XLA service 0x52a1590 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n2020-11-07 23:00:10.543767: I tensorflow\/compiler\/xla\/service\/service.cc:176]   StreamExecutor device (0): Host, Default Version\n2020-11-07 23:00:10.799878: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.800523: I tensorflow\/compiler\/xla\/service\/service.cc:168] XLA service 0x4baece0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n2020-11-07 23:00:10.800604: I tensorflow\/compiler\/xla\/service\/service.cc:176]   StreamExecutor device (0): GeForce GTX 1060 6GB, Compute Capability 6.1\n2020-11-07 23:00:10.801142: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.802326: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1716] Found device 0 with properties: \npciBusID: 0000:26:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1\ncoreClock: 1.7085GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB\/s\n2020-11-07 23:00:10.802405: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\n2020-11-07 23:00:10.802461: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10\n2020-11-07 23:00:10.802499: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcufft.so.10\n2020-11-07 23:00:10.802542: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcurand.so.10\n2020-11-07 23:00:10.802582: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcusolver.so.10\n2020-11-07 23:00:10.802620: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcusparse.so.10\n2020-11-07 23:00:10.802660: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudnn.so.7\n2020-11-07 23:00:10.802864: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.803808: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:10.804611: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1858] Adding visible gpu devices: 0\n2020-11-07 23:00:10.804690: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\n2020-11-07 23:00:11.184178: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1257] Device interconnect StreamExecutor with strength 1 edge matrix:\n2020-11-07 23:00:11.184228: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1263]      0 \n2020-11-07 23:00:11.184238: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1276] 0:   N \n2020-11-07 23:00:11.184452: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:11.184839: I tensorflow\/stream_executor\/cuda\/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n2020-11-07 23:00:11.185183: I tensorflow\/core\/common_runtime\/gpu\/gpu_device.cc:1402] Created TensorFlow device (\/job:localhost\/replica:0\/task:0\/device:GPU:0 with 4853 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:26:00.0, compute capability: 6.1)\nTraining for 50000 steps ...\nWARNING:tensorflow:From \/usr\/local\/lib\/python3.6\/dist-packages\/tensorflow\/python\/keras\/engine\/training_v1.py:2070: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\nInstructions for updating:\nThis property should not be used in TensorFlow 2.0, as updates are applied automatically.\n2020-11-07 23:00:11.519149: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10\nTraceback (most recent call last):\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/gym\/envs\/classic_control\/rendering.py\", line 25, in &lt;module>\n    from pyglet.gl import *\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/pyglet\/gl\/__init__.py\", line 95, in &lt;module>\n    from pyglet.gl.lib import GLException\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/pyglet\/gl\/lib.py\", line 149, in &lt;module>\n    from pyglet.gl.lib_glx import link_GL, link_GLU, link_GLX\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/pyglet\/gl\/lib_glx.py\", line 45, in &lt;module>\n    gl_lib = pyglet.lib.load_library('GL')\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/pyglet\/lib.py\", line 164, in load_library\n    raise ImportError('Library \"%s\" not found.' % names[0])\nImportError: Library \"GL\" not found.\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"test.py\", line 45, in &lt;module>\n    dqn.fit(env, nb_steps=50000, visualize=True, verbose=2)\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/rl\/core.py\", line 187, in fit\n    callbacks.on_action_end(action)\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/rl\/callbacks.py\", line 100, in on_action_end\n    callback.on_action_end(action, logs=logs)\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/rl\/callbacks.py\", line 362, in on_action_end\n    self.env.render(mode='human')\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/gym\/core.py\", line 240, in render\n    return self.env.render(mode, **kwargs)\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/gym\/envs\/classic_control\/cartpole.py\", line 174, in render\n    from gym.envs.classic_control import rendering\n  File \"\/usr\/local\/lib\/python3.6\/dist-packages\/gym\/envs\/classic_control\/rendering.py\", line 32, in &lt;module>\n    ''')\nImportError: \n    Error occurred while running `from pyglet.gl import *`\n    HINT: make sure you have OpenGL install. On Ubuntu, you can run 'apt-get install python-opengl'.\n    If you're running on a server, you may need a virtual frame buffer; something like this should work:\n    'xvfb-run -s \"-screen 0 1400x900x24\" python &lt;your_script.py>'\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ub204\uad70\uac00 \uc5f4\uc2ec\ud788 \uac1c\ubc1c\ud55c \uc54c\uace0\ub9ac\uc998\uc744 \uac1c\ubc1c\ud588\ub2e4\uba74, \ub0b4\uac00 \ucc98\uc74c \ucf54\ub4dc\ub97c \ub9cc\ub4e0\ub2e4\uba74 \ud560\ub9cc\ud558\ub2e4. \uadf8\ub7ec\ub098 \uc778\ud130\ub137\uc5d0 \uc2dc\uac04\uc774 \ub0a8\uc544\ub3c4\ub294 \uc778\uac04\uc774 \ub9ce\uace0 \uadf8\ub4e4\uc744 \ub2e4 \uc81c\uce58\uace0 \ub0b4\uac00 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[33,12],"tags":[819,271,109],"class_list":["post-4224","post","type-post","status-publish","format-standard","hentry","category-tensorflow","category-12","tag-keras","tag-reinforcementlearning","tag-tensorflow"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=4224"}],"version-history":[{"count":3,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4224\/revisions"}],"predecessor-version":[{"id":4229,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4224\/revisions\/4229"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=4224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=4224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=4224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}