質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1363閲覧

Alphazeroの参考書で発生するTypeErrorを解決したい

310310

総合スコア2

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/13 15:29

編集2020/07/15 06:59

前提・実現したいこと

Alphazeroの参考書(詳細は補足情報参照)で、以下のコードを、google colabで実行したところ、以下のエラーメッセージが発生しました。どうすれば正しく実行できるか教えていただきたいです。

発生している問題・エラーメッセージ

TypeError Traceback (most recent call last) <ipython-input-11-9f566a3486e1> in <module>() 8 step += 1 9 ---> 10 frames.append(env.render(mode='rgb_array')) 11 12 action = np.argmax(main_qn.model.predict(state)[0]) 2 frames /usr/local/lib/python3.6/dist-packages/gym/envs/classic_control/rendering.py in render(self, return_rgb_array) 113 buffer = pyglet.image.get_buffer_manager().get_color_buffer() 114 image_data = buffer.get_image_data() --> 115 arr = np.frombuffer(image_data.get_data(), dtype=np.uint8) 116 # In https://github.com/openai/gym-http-api/issues/2, we 117 # discovered that someone using Xmonad on Arch was having TypeError: get_data() missing 2 required positional arguments: 'format' and 'pitch

該当のソースコード

frames = [] state = env.reset() state = np.reshape(state, [1, state_size]) step = 0 for step in range(1, MAX_STEPS+1): step += 1 frames.append(env.render(mode='rgb_array')) action = np.argmax(main_qn.model.predict(state)[0]) next_state, reward, done, _ = env.step(action) next_state = np.reshape(next_state, [1, state_size]) if done: next_state = np.zeros(state.shape) break else: state = next_state print('ステップ数: {}'.format(step))

ランタイムの再接続,および、tensorflowのバージョンを、参考書が使っていた1.13.1で試したがうまくいかなかった。

補足情報(FW/ツールのバージョンなど)

参考書名は「AlphaZero 深層学習 強化学習 探索 人口プログラミング実践入門」で、p.170の部分です。

また、以下のように、OpenAI Gymを使うための準備を行ってから実行しています。
!apt-get -qq -y install xvfb freeglut3-dev ffmpeg> /dev/null
!pip install pyglet==1.3.2
!pip install pyopengl
!pip install pyvirtualdisplay

from pyvirtualdisplay import Display
import os
disp = Display(visible=0, size=(1024, 768))
disp.start()
os.environ['DISPLAY'] = ':' + str(disp.display) + '.' + str(disp.screen)

なお、最後の行は、ほかのネットの記事などで調べたところ、コメントアウトしないとエラーになり、コメントアウトすれば問題なく、実行できると書かれていたので、コメントアウトして実行しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

その書籍は持っていないので推測ですが、もしOpenAI Gymを使っているのだとすれば、Googole Colabで使うには必要なパッケージのインストールなど環境整備が必要なようです。
参考:Google Colaboratory上でopenAIを動かす

Google Colabはわりと頻繁にアップデートされ動作や環境が変わっており、以前のコードが動かなくなることがよくあります。
その書籍は出版社にて正誤表が公開されていますので、まずは最新の内容にて試してみるとよいかと思います。
それでも問題が出る場合は、まずは出版社や著者へ問い合わせたほうが、より確度の高い返答を得られやすいかと思います。(お金を払っているので)

投稿2020/07/13 22:06

編集2020/07/15 07:23
can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

310310

2020/07/14 04:31

!apt-get -qq -y install xvfb freeglut3-dev ffmpeg> /dev/null !pip install pyglet==1.3.2 !pip install pyopengl !pip install pyvirtualdisplay from pyvirtualdisplay import Display import os disp = Display(visible=0, size=(1024, 768)) disp.start() #os.environ['DISPLAY'] = ':' + str(disp.display) + '.' + str(disp.screen) テキスト通り、上記のようなコードを実行してから、質問したコードを実行しています。なお、最後の行は、ほかのネットの記事などで調べたところ、コメントアウトしないとエラーになり、コメントアウトすれば問題なく、実行できると書かれていたので、このようになっています。
can110

2020/07/14 04:35

上記コードは、質問本文に記載したほうがよいかと思います。 そのテキストはGoogle Colab上で動作するように書かれているのでしょうか?
310310

2020/07/15 06:54

google colab上で、コードを実行するために書かれたテキストです。 上記のコードは本文に載せておきます。
can110

2020/07/15 07:24

なるほど。本の内容が古い(正誤表がある)可能性もありますので最新の内容を確認ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問