2019-12-01から1ヶ月間の記事一覧
はじめに 以前作成したGIFファイルがTwitterに張り付けると動きませんでした。原因を調べてみると色が最大256色しか使えないことがわかりました。 今回はすでに保存したGIFファイルをGIFアニメーションに変換するプログラムを作っていきます。 解説 色情報は…
はじめに GIFファイルを編集するための準備を行います。GIFの読み込み、表示、書き込みの基本を勉強していきます。GIFの読み込み方は「OpenCV」と「Pillow(PIL)」がありますが、「OpenCV」が編集しやすそうなのでこちらを利用します。 モジュールのインポー…
ラベルとボタンの境界線を手動で移動させる方法 Splitter(スプリッター)ウィジェットを使います。境界をドラッグすることでサイズが変更できます。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.s…
はじめに 今回は納得できるまでの結果は出ませんでした。まだまだ課題が残ってますが、Kivyでのポップアップ(Popup)とファイル選択(FileChooser)をやってみました。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config impo…
はじめに Kivyのテキストボックスの内容をtxtファイルへ保存する方法を調べるのに苦労しました。それもそのはずで保存はKivyモジュールは使わずPythonのwrite関数を使うみたいです。最近KivyばかりやっていたのでなんでもKivyでしようとしてました。 Python…
日本語表示と日本語入力をする方法 1)kvファイルに日本語を対応させる 2)日本語を表示させる 3)日本語を入力する の順番で解説していきます。 1)kvファイルに日本語を対応させる まずラベル、テキストボックス、ボタンを作ります。 # フル画面を解除…
グラフを表示する方法 今回はMatplotlibモジュールを使ってグラフを表示していきます。BoxLayoutの上にラベル、真ん中にグラフ、下にボタンを表示させたいと思います。 プログラムのコード # フル画面を解除 from kivy.config import Config Config.set('gra…
写真の向きを正しく表示する方法 今回はPILモジュールを使って「画像を回転」してKivyで表示していきます。 画面のスライドのときに使った「Imageウィジェット」では、ファイル名を指定して画像を表示するため画像ファイルを編集する場合は一度保存する必要…
はじめに 前回の画面のスライドで、なぜか縦向きの写真が横を向いてしまう問題を調べていきます。 スマホで撮った写真などは、画像ファイルの中に撮影した日付、位置情報、写真の向きなどのデータが格納されています。そのデータのことを「Exif」というらし…
画面をスライドさせる方法 今回は画面のスライドを作ってみます。Carousel(ウェジットの1つ)を使います。Carouselとは、直訳でメリーゴーラウンドや回転式コンベヤーという意味です。スライド間でスワイプして水平または垂直に移動できます。 まずは基本…
画面をスクロールさせる方法 今回は画面スクロールを作ってみます。ScrollView(ウェジットの1つ)を使います。 プログラムのコード # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Co…
ボールの速度を変える方法 今回はボタンを使ってみます。スピードアップとスピードダウン、そして逆再生の3つのボタンを作ります。(本当は一時停止を作りたかったのですがグローバル変数とか面倒だったので逆再生にしたのは内緒です) 第6回で使ったプロ…
サブ画面でボールを動かす方法 第5回の続きです。ボールが動くようになりました。 KivyのチュートリアルにあるPong Gameを参考にしていきます。チュートリアルの「ボールのアニメーションを追加する」からです。 プログラムのコード # フル画面を解除して画…
はじめに 本日は最後までボールは動きません。 特に進展もないので飛ばしてもらった方がいいです。ハマった様子を見たい方のみ先にお進みください。 Kivyのチュートリアルの「ボールのアニメーションを追加する」でボールが動きません。 プログラムのコード …
レイアウトの中に別のレイアウトを作る方法 KivyのチュートリアルにあるPong Gameを参考にしていきます。 レイアウトの中に別のレイアウトで「Pong Game」ぽいのを作っていきます。 前回のプログラムを少し変更します。 # フル画面を解除して画面の幅と高さ…
背景のレイアウトを追加する方法 背景に色を付けてみます。 前回のプログラムをそのまま使います。 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 32…
kvファイルとは? Appで終わるクラス名からAppを引いた小文字で同じ名前を持つkvファイルを呼び出します。例えば、class TestApp(App):の場合は kvファイルの名前は「test.kv」です。ラベルやボタンなどのレイアウト情報を別ファイルで管理して簡単に調整で…
ラベルとボタンを配置する方法 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) Config.set('graphics', …
フル画面を解除してウィンドウの大きさを設定する方法 # フル画面を解除して画面の幅と高さを設定 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 568) C…
はじめに ボタンを押すとテキストボックスの文字がラベルに表示されるプログラムを日本語入力に対応しました。 解説 こちらのサイトを参考にさせていただきました。 qiita.com cppファイルとdllファイルも同じフォルダに保存してpython multi_language_texti…
本日の課題と目標 テキストボックスに日本語を入力する はじめに start-python.hateblo.jp 以前一度挑戦して諦めていたKivyでテキストボックスに日本語入力。dllを作っている方がいるということを教えていただき再び挑戦することになりました。 結論から言う…
Deep Q-Network(DQN)による倒立振子 第7回 はじめに 前回は学習させる方法を見ていきました。今回は残りの部分をさっと流して棒を安定させるためにどこがおかしいか探っていきます。 最後のプログラムのコードです。 if DQN_MODE: targetQN = mainQN # 行…
Deep Q-Network(DQN)による倒立振子 第6回 はじめに 前回は学習したモデルで予測した結果を出しました。今回は学習させる方法を見ていきます。 # Qネットワークの重みを学習・更新する replay if (memory.len() > batch_size) and not islearned: mainQN.…
Deep Q-Network(DQN)による倒立振子 第5回 はじめに モジュールのバージョン問題やクラスの理解不足でなかなか先に進みません。 今回からメイン部分を見ていきます。 # [5.3]メインルーチン-------------------------------------------------------- for…
Deep Q-Network(DQN)による倒立振子 第4回 はじめに 今回はこちらの二行を見ていきます。 memory = Memory(max_size=memory_size) actor = Actor() クラス:Memoryを呼び出しています。 # [3]Experience ReplayとFixed Target Q-Networkを実現するメモリ…
Deep Q-Network(DQN)による倒立振子 第3回 はじめに 今回は「mainQN = QNetwork(hidden_size=hidden_size, learning_rate=learning_rate) # メインのQネットワーク」この一行を見ていきます。 クラス:QNetworkを呼び出しています。 # [2]Q関数をディープ…
Deep Q-Network(DQN)による倒立振子 第2回 はじめに 前回からDeep Q-Network(DQN)を勉強しています。前回のエラーの原因を詳しく調べていきます。 「WARNING:tensorflow:The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_d…
Deep Q-Network(DQN)による倒立振子 第1回 はじめに 今回からDeep Q-Network(DQN)を勉強します。ざっとコードを見た感じでは絶望的にまったくわかりません。 一日二日では終わりそうにないのでその日に進んだ分だけ載せていきます。十分に理解できるの…
はじめに Deep Q-Network(DQN)の勉強を始める前に気になったことがあったのでちょっと寄り道します。 それは、CartPoleのカートを自分で操作してみたくなりました。(右移動と左移動をキーボードで入力) とりあえず動けばオッケー、ということで完成形がこ…
gymの倒立振子を使って強化学習モンテカルロ法 モンテカルロ法とQ-learning、SARSA法の違い モンテカルロ法は、アクションごとにQ値を更新するQ-learningやSARSA法と違い、CartPoleが倒れるまで行動しその行動履歴から一気にQ値を更新します。 モンテカルロ…