プロのエンジニアが持つべき考え方
- 今朝Qiitaに投稿されていた『エンジニアで稼ぐために大切な20のコト』を読んで、感動しました。
- 他の業種にも共通することは多いと思いますが、ITエンジニアは特に頷くこと多いと思います。
- 文章は少し尖がっていますが、自分と大切な人を守るためには(先ず己に素直に生きるために)、この考え方は必要だと思います。
- プロのエンジニアの方、特にサラリーマンの方必見です。
- これから実践して生きます!!
Python からテキストファイルの操作 ~分かりづらいread, readline, readlinesの違いを整理~
パイソンで分かりづらいread, readline, readlinesの違いを整理しよー
こんばんわ、たっきーです。
- 前回の教室で、sho君がチャレンジしたPython からテキストファイル操作の発展系を学びましょう。
分かりづらいread, readline, readlinesの違いを整理します。
テキストファイルを操作する場合、読み出しに関わるメソッドは3つあります。
メソッド | 説明 |
---|---|
read() | ファイルを全て読み込みstr型に格納、その文字列データに対して処理を行う |
readline() | 1行毎に読み込みstr型に格納、その処理を繰り返す |
readlines() | ファイルを全て読み込みlist型に格納、1行毎に処理を行う |
- 説明を読んでも分かりませんね。動作や使い方が異なりますので、実際に書いて試しましょう!!
- 各メソッドのサンプルを使ったプログラムを作成しました。同じディレクトリに
text.txt
のファイルを作成し、テキストを数行準備してください。
# coding: utf-8 # readの場合 (ファイルのEOFまで全て読み出す) file1 = open("text.txt", mode="r") str1 = file1.read() file1.close() print ("+"*50) print ("readメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) #readで読み出したstr1には改行コードが含まれる print (str1) print ("") # readline (1行ずつ文字列として読み出す) file1 = open("text.txt", mode="r") str1 = file1.readline() print ("+"*50) print ("readlineメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) while str1: #EOFまで読み出す print (str1, end="") #readlineで読み出したstr1には改行コードが含まれる, 各printにも改行コードが付加されるためここではカットする str1 = file1.readline() file1.close() print ("") # readlines (ファイルのEOFまで全て読み出し、配列に格納) file1 = open("text.txt", mode="r") str1 = file1.readlines() file1.close() print ("+"*50) print ("readlinesメソッドで読み込んだ場合の型 ⇒ ", end="") print (type(str1)) #1行ずつリストの要素に格納される print ("普通に表示させた場合: ") print (str1) print ("\n(*)ループを使ってリスト内の文字列表示させた場合: ") for i in range(len(str1)): print (str1[i], end="") #リストの要素には改行コードも含まれるため、各printの改行コードはカットする
ー 以下実行結果です。
‐ read, readline, readlinesの違い分かりましたか??
パイソンでファイルを自由自在にあやつろうー!
- こんばんわ、たっきーです。桑名のプログラミング教室では、はじめてのプログラミング教室として、初めにスクラッチを使ったブロックプログラミングに取り組んでもらっています。
- 次のステップはパイソンです。マウスは使いません!! コマンドを打ち込んで、コードを書きまくります。
パイソンってどうやってプログラム作るの?
パイソンは、エディタを使ってコーディングします。エディタはPython本家の統合開発環境であるIDLEが分かりやすいです。コーディングに慣れてくるとAtom、Sublime Textなどのエディタを使用することで、インデントやタグの入力を補ってくれるのでおススメです。
IDELの画面(白いやつ)
Atomの画面(黒いやつ)
パイソンからファイルを読み書きする
- 昨日の教室では、sho君がパイソンからファイルを読み書きするプログラムに挑戦してくれました。
ファイルの読み書きは、下記の流れになります。
- ファイルをオープン ⇒ プログラムがファイルread,write する ⇒ ファイルをクローズ
以下は、ファイルにwriteするプログラムです。
- open, write, close とありますので、前述の流れがイメージ付くかなと思います。
- ここでは、ファイルをオープン後何らかのエラーでプログラムが中断した場合でもクローズ処理が行われるようにtry..except..finally で、クローズ処理をするように書いてあります。
file1 = open("test2.txt", mode="w") try: file1.write("私は失敗したことがない\n") file1.write("ただ、1万通りの、\n") file1.write("うまく行かない方法を見つけただけだ。\n") print("ファイルに書き込みました。") except: print("エラーが発生しました。") finally: print("ファイルを閉じます...") file1.close()
パスワードファイルをあやつる!
- sho君が取り組んだ、考えよう11 「秘密のパスワードファイルを作るアプリを作ろう」の課題です。
□考えよう11 秘密のパスワードファイルを作るアプリを作ろう パスワードを作成する処理(ファイルに書き出す)、パスワードが正しいかをチェックする処理(ファイルから読み出した数字と入力した数字が等しいかを判定する)を作成します。 それぞれの処理をメニューから選ぶようにします。
実行結果
sho君は、見事Noヒントでプログラムできましたー! 予習の正解もあって理解が早かったみたいです。すんばらしい~!
- こうしてプログラムを製作していくと、パソコンやソフトウェアの世界がどのような仕組みでできているのか少し見えてくる気がしますね。
- コンピュータの中には、無限の世界が広がっています。きみが望めば無限の世界とつながることができる!
- さぁ、わくわくときみの無限の可能性を開けましょう!!
満員御礼! 桑名でプログラミングを学ぶ場を
JEUGIAカルチャーセンター桑名でプログラミング教室をやっております、たっきーです。 昨日もプログラミング教室に参加いただき、ありがとうございます!!
- 体験含め生徒10人を超えましたー!
- いつもパソコン持ってにこにこと参加くださる生徒みなさま、ご理解とサポート頂ける保護者様、JEUGIAカルチャーセンターのスタッフ方々に感謝です。
2/3 に行った教室の様子をレポートします。
- 1月に体験に来ていただいたren君、rikoちゃんが今回から生徒に加わりました。また会えて、とっても嬉しいです。
- 今回は大人のkoba様、nishi様、小6のyo君が体験に来てくれました。どうもありがとうございます。
- はじめてのプログラミングはいかがでしたか? むずかしかったでしょうか??
- 子どもが取り組んでいるため、大人の方から「最初はかんたんかと思ったけれど、意外と難しかった」と感想を頂きました。
- そうなんです。プログラミングは単純にパソコンの操作を覚えるのとは違います。まるでパズルを組み立てるような、頭のなかで完成図をイメージしてプログラムを作りましょう。プログラミング脳がきたえられます!!
- 昨日は生徒と体験が多かったため、いつもより余裕がなかったかもしれません…。教室を増やす、時間をずらすなど目が行き届くように計画中です。ぜひ率直なご意見をお聞かせください。どうぞよろしくお願いします。
- いなべに開いて欲しい。弥冨でできないか。土曜日以外はないの? それでもかまいません。ぜひ教えて下さい。
はじめてのスクラッチ
- ren君は1月体験の続きで課題2の「バレリーナ」からプログラム製作開始しました。
- rikoちゃんは1月体験の続きで、考えようの「ねこをバナナに向かって歩かせよう」から作り始めました。
二人とも考えようの「ねこを斜めに向かって走らせよう」、「ねこをマウスに向かって走らせよう」まで見事完成です!!
スタートしてから何をゴールにするか(例:バナナまで行く)を頭に入れて、どうやったらできるかな?を一生懸命に考えて下さい。ブロック遊びと同じです。答えはきみの手の中にあります。後は組み立てるだけ。
昨日は小6のyo君が体験に来てくれました。すごい!! はじめてじゃないでしょ!?もう習ってたんでしょ。というスピードにびっくりです。
- また、すでにプログラムはどうあるべきかを知っている様です。例えば、ねこがバナナに向かって歩く。ねこが斜めに向かって走る。そんなゴールのあるプログラムを作るときに、ちゃんと終了判定をしてるんです。普通はバナナや端まで来たら終わりなんですが、ちゃんとゴールまで来たら終わるように組むんです。プログラムの気持ちになって、コードを書いてますね。素晴らしい。
10才からはじめるゲームプログラミング図鑑
yu君、syun君、shiちゃんには、10才からはじめるゲームプログラミング図鑑の「スター・ハンター」を、syu君には「氷の上のレース」を製作してもらいました。
良いプログラムを見て真似てください。良いプログラムには、自分が思いつかなかったコードがたくさん書かれています。良いプログラムをヒントにして、プログラムの書き方を自分のものにしましょう!!
- 以下は、syu君製作の「氷の上のレース」のスクラッチ画面です。
- 昨日の教室で参考に使用したゲームプログラミング図鑑は、8つのゲーム製作方法が収録されている書籍です。
- どんなゲームが作れるのかな?この本を読むとこんなことができるんだ!とてもわくわくする一冊です。教室にありますので、手に取ってご覧ください。
大垣市ソフトピアジャパン ドリーム・コアで、『機械学習実践勉強会』に参加しましたー!
『機械学習実践勉強会』に参加しましたー!
おはようございます。たっきーです。 昨日(1/27)は、大垣市ソフトピアジャパン ドリーム・コアで開催された『第4回 機械学習実践勉強会 画像認識技術ハンズオン』に参加しましたー!
ドリーム・コアにお邪魔したのは初めてで、とても綺麗で充実した施設が三重県から見てうらやましい! また、岐阜県のIT技術者、システム開発者の方にお会いできました。良い出会いをありがとうございます。 そして、なによりもやりたいと思っていたがまだ取り組めていなかったPythonを使った機械学習を学ぶことができ、とーっても楽しかったです!! 今回の学びの機会を設けて頂いた職員の方、そして講師をして下さった合同会社 4D Pocket 代表の石郷様、アシスタントの柏木様に感謝です。
機械学習実践勉強会の振り返り
- 簡単ですが、昨日の学びについて、振り返ります。
0. 事前準備
- 前日に、Pythonの開発環境を準備しました。下記サイトより、Anacondaをインストールしました。AnacondaはPythonとよく使われるライブラリがセットになった開発環境です。
- Python初心者の場合、パッケージ、ライブラリの入手やインストールは、OS(例:Mac,Windows),Versionによって異なるのでハードルが高くなりますが、Anacondaを使用することで手軽に利用できます。
1. Python画像処理ライブラリ「OpenCV」を使ってみる
(C:\Users\takaa\Anaconda3) C:\Users\takaa>conda install opencv Fetching package metadata ............. Solving package specifications: . Package plan for installation in environment C:\Users\takaa\Anaconda3: The following NEW packages will be INSTALLED: opencv: 3.3.1-py36h20b85fd_1 The following packages will be UPDATED: anaconda: 5.0.1-py36h8316230_2 --> custom-py36h363777c_0 conda: 4.3.30-py36h7e176b0_0 --> 4.4.8-py36_0 libtiff: 4.0.8-vc14h04e2a1e_10 --> 4.0.9-h0f13578_0 pycosat: 0.6.2-py36hf17546d_1 --> 0.6.3-py36h413d8a4_0 Proceed ([y]/n)? y anaconda-custo 100% |###############################| Time: 0:00:00 9.04 MB/s libtiff-4.0.9- 100% |###############################| Time: 0:00:01 506.76 kB/s pycosat-0.6.3- 100% |###############################| Time: 0:00:00 582.74 kB/s opencv-3.3.1-p 100% |###############################| Time: 0:04:14 397.98 kB/s conda-4.4.8-py 100% |###############################| Time: 0:00:03 263.38 kB/s (C:\Users\takaa\Anaconda3) C:\Users\takaa> (C:\Users\takaa\Anaconda3) C:\Users\takaa>conda list # packages in environment at C:\Users\takaa\Anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py36he6757f0_0 alabaster 0.7.10 py36hcd07829_0 anaconda custom py36h363777c_0 anaconda-client 1.6.5 py36hd36550c_0 anaconda-navigator 1.6.9 py36hc720852_0 anaconda-project 0.8.0 py36h8b3bf89_0 asn1crypto 0.22.0 py36h8e79faa_1 astroid 1.5.3 py36h9d85297_0 astropy 2.0.2 py36h06391c4_4 babel 2.5.0 py36h35444c1_0 backports 1.0 py36h81696a8_1 backports.shutil_get_terminal_size 1.0.0 py36h79ab834_2 beautifulsoup4 4.6.0 py36hd4cc5e8_1 bitarray 0.8.1 py36h6af124b_0 bkcharts 0.2 py36h7e685f7_0 blaze 0.11.3 py36h8a29ca5_0 bleach 2.0.0 py36h0a7e3d6_0 bokeh 0.12.10 py36h0be3b39_0 boto 2.48.0 py36h1a776d2_1 bottleneck 1.2.1 py36hd119dfa_0 bzip2 1.0.6 vc14hdec8e7a_1 [vc14] ca-certificates 2017.08.26 h94faf87_0 cachecontrol 0.12.3 py36hfe50d7b_0 certifi 2017.7.27.1 py36h043bc9e_0 cffi 1.10.0 py36hae3d1b5_1 chardet 3.0.4 py36h420ce6e_1 click 6.7 py36hec8c647_0 cloudpickle 0.4.0 py36h639d8dc_0 clyent 1.2.2 py36hb10d595_1 colorama 0.3.9 py36h029ae33_0 comtypes 1.1.2 py36heb9b3d1_0 conda 4.4.8 py36_0 conda-build 3.0.27 py36h309a530_0 conda-env 2.6.0 h36134e3_1 conda-verify 2.0.0 py36h065de53_0 console_shortcut 0.1.1 h6bb2dd7_3 contextlib2 0.5.5 py36he5d52c0_0 cryptography 2.0.3 py36h123decb_1 curl 7.55.1 vc14hdaba4a4_3 [vc14] cycler 0.10.0 py36h009560c_0 cython 0.26.1 py36h18049ac_0 cytoolz 0.8.2 py36h547e66e_0 dask 0.15.3 py36h396fcb9_0 dask-core 0.15.3 py36hd651449_0 datashape 0.5.4 py36h5770b85_0 decorator 4.1.2 py36he63a57b_0 distlib 0.2.5 py36h51371be_0 distributed 1.19.1 py36h8504682_0 docutils 0.14 py36h6012d8f_0 entrypoints 0.2.3 py36hfd66bb0_2 et_xmlfile 1.0.1 py36h3d2d736_0 fastcache 1.0.2 py36hffdae1b_0 filelock 2.0.12 py36hd7ddd41_0 flask 0.12.2 py36h98b5e8f_0 flask-cors 3.0.3 py36h8a3855d_0 freetype 2.8 vc14h17c9bdf_0 [vc14] get_terminal_size 1.0.0 h38e98db_0 gevent 1.2.2 py36h342a76c_0 glob2 0.5 py36h11cc1bd_1 greenlet 0.4.12 py36ha00ad21_0 h5py 2.7.0 py36hfbe0a52_1 hdf5 1.10.1 vc14hb361328_0 [vc14] heapdict 1.0.0 py36h21fa5f4_0 html5lib 0.999999999 py36ha09b1f3_0 icc_rt 2017.0.4 h97af966_0 icu 58.2 vc14hc45fdbb_0 [vc14] idna 2.6 py36h148d497_1 imageio 2.2.0 py36had6c2d2_0 imagesize 0.7.1 py36he29f638_0 intel-openmp 2018.0.0 hcd89f80_7 ipykernel 4.6.1 py36hbb77b34_0 ipython 6.1.0 py36h236ecc8_1 ipython_genutils 0.2.0 py36h3c5d0ee_0 ipywidgets 7.0.0 py36h2e74ada_0 isort 4.2.15 py36h6198cc5_0 itsdangerous 0.24 py36hb6c5a24_1 jdcal 1.3 py36h64a5255_0 jedi 0.10.2 py36hed927a0_0 jinja2 2.9.6 py36h10aa3a0_1 jpeg 9b vc14h4d7706e_1 [vc14] jsonschema 2.6.0 py36h7636477_0 jupyter 1.0.0 py36h422fd7e_2 jupyter_client 5.1.0 py36h9902a9a_0 jupyter_console 5.2.0 py36h6d89b47_1 jupyter_core 4.3.0 py36h511e818_0 jupyterlab 0.27.0 py36h34cc53b_2 jupyterlab_launcher 0.4.0 py36h22c3ccf_0 lazy-object-proxy 1.3.1 py36hd1c21d2_0 libiconv 1.15 vc14h29686d3_5 [vc14] libpng 1.6.32 vc14h5163883_3 [vc14] libssh2 1.8.0 vc14hcf584a9_2 [vc14] libtiff 4.0.9 h0f13578_0 libxml2 2.9.4 vc14h8fd0f11_5 [vc14] libxslt 1.1.29 vc14hf85b8d4_5 [vc14] llvmlite 0.20.0 py36_0 locket 0.2.0 py36hfed976d_1 lockfile 0.12.2 py36h0468280_0 lxml 4.1.0 py36h0dcd83c_0 lzo 2.10 vc14h0a64fa6_1 [vc14] markupsafe 1.0 py36h0e26971_1 matplotlib 2.1.0 py36h11b4b9c_0 mccabe 0.6.1 py36hb41005a_1 menuinst 1.4.10 py36h42196fb_0 mistune 0.7.4 py36h4874169_0 mkl 2018.0.0 h36b65af_4 mkl-service 1.1.2 py36h57e144c_4 mpmath 0.19 py36he326802_2 msgpack-python 0.4.8 py36h58b1e9d_0 multipledispatch 0.4.9 py36he44c36e_0 navigator-updater 0.1.0 py36h8a7b86b_0 nbconvert 5.3.1 py36h8dc0fde_0 nbformat 4.4.0 py36h3a5bc1b_0 networkx 2.0 py36hff991e3_0 nltk 3.2.4 py36hd0e0a39_0 nose 1.3.7 py36h1c3779e_2 notebook 5.0.0 py36hd9fbf6f_2 numba 0.35.0 np113py36_10 numexpr 2.6.2 py36h7ca04dc_1 numpy 1.13.3 py36ha320f96_0 numpydoc 0.7.0 py36ha25429e_0 odo 0.5.1 py36h7560279_0 olefile 0.44 py36h0a7bdd2_0 opencv 3.3.1 py36h20b85fd_1 openpyxl 2.4.8 py36hf3b77f6_1 openssl 1.0.2l vc14hcac20b0_2 [vc14] packaging 16.8 py36ha0986f6_1 pandas 0.20.3 py36hce827b7_2 pandoc 1.19.2.1 hb2460c7_1 pandocfilters 1.4.2 py36h3ef6317_1 partd 0.3.8 py36hc8e763b_0 path.py 10.3.1 py36h3dd8b46_0 pathlib2 2.3.0 py36h7bfb78b_0 patsy 0.4.1 py36h42cefec_0 pep8 1.7.0 py36h0f3d67a_0 pickleshare 0.7.4 py36h9de030f_0 pillow 4.2.1 py36hdb25ab2_0 pip 9.0.1 py36hadba87b_3 pkginfo 1.4.1 py36hb0f9cfa_1 ply 3.10 py36h1211beb_0 progress 1.3 py36hbeca8d3_0 prompt_toolkit 1.0.15 py36h60b8f86_0 psutil 5.4.0 py36h4e662fb_0 py 1.4.34 py36ha4aca3a_1 pycodestyle 2.3.1 py36h7cc55cd_0 pycosat 0.6.3 py36h413d8a4_0 pycparser 2.18 py36hd053e01_1 pycrypto 2.6.1 py36he68e6e2_1 pycurl 7.43.0 py36h086bf4c_3 pyflakes 1.6.0 py36h0b975d6_0 pygments 2.2.0 py36hb010967_0 pylint 1.7.4 py36ha4e6ded_0 pyodbc 4.0.17 py36h0006bc2_0 pyopenssl 17.2.0 py36h15ca2fc_0 pyparsing 2.2.0 py36h785a196_1 pyqt 5.6.0 py36hb5ed885_5 pysocks 1.6.7 py36h698d350_1 pytables 3.4.2 py36h71138e3_2 pytest 3.2.1 py36h753b05e_1 python 3.6.3 h9e2ca53_1 python-dateutil 2.6.1 py36h509ddcb_1 pytz 2017.2 py36h05d413f_1 pywavelets 0.5.2 py36hc649158_0 pywin32 221 py36h9c10281_0 pyyaml 3.12 py36h1d1928f_1 pyzmq 16.0.2 py36h38c27d9_2 qt 5.6.2 vc14h6f8c307_12 [vc14] qtawesome 0.4.4 py36h5aa48f6_0 qtconsole 4.3.1 py36h99a29a9_0 qtpy 1.3.1 py36hb8717c5_0 requests 2.18.4 py36h4371aae_1 rope 0.10.5 py36hcaf5641_0 ruamel_yaml 0.11.14 py36h9b16331_2 scikit-image 0.13.0 py36h6dffa3f_1 scikit-learn 0.19.1 py36h53aea1b_0 scipy 0.19.1 py36h7565378_3 seaborn 0.8.0 py36h62cb67c_0 setuptools 36.5.0 py36h65f9e6e_0 simplegeneric 0.8.1 py36heab741f_0 singledispatch 3.4.0.3 py36h17d0c80_0 sip 4.18.1 py36h9c25514_2 six 1.11.0 py36h4db2310_1 snowballstemmer 1.2.1 py36h763602f_0 sortedcollections 0.5.3 py36hbefa0ab_0 sortedcontainers 1.5.7 py36ha90ac20_0 sphinx 1.6.3 py36h9bb690b_0 sphinxcontrib 1.0 py36hbbac3d2_1 sphinxcontrib-websupport 1.0.1 py36hb5e5916_1 spyder 3.2.4 py36h8845eaa_0 sqlalchemy 1.1.13 py36h5948d12_0 sqlite 3.20.1 vc14h7ce8c62_1 [vc14] statsmodels 0.8.0 py36h6189b4c_0 sympy 1.1.1 py36h96708e0_0 tblib 1.3.2 py36h30f5020_0 testpath 0.3.1 py36h2698cfe_0 tk 8.6.7 vc14hb68737d_1 [vc14] toolz 0.8.2 py36he152a52_0 tornado 4.5.2 py36h57f6048_0 traitlets 4.3.2 py36h096827d_0 typing 3.6.2 py36hb035bda_0 unicodecsv 0.14.1 py36h6450c06_0 urllib3 1.22 py36h276f60a_0 vc 14 h2379b0c_2 vs2015_runtime 14.0.25123 hd4c4e62_2 wcwidth 0.1.7 py36h3d5aa90_0 webencodings 0.5.1 py36h67c50ae_1 werkzeug 0.12.2 py36h866a736_0 wheel 0.29.0 py36h6ce6cde_1 widgetsnbextension 3.0.2 py36h364476f_1 win_inet_pton 1.0.1 py36he67d7fd_1 win_unicode_console 0.5 py36hcdbd4b5_0 wincertstore 0.2 py36h7fe50ca_0 wrapt 1.10.11 py36he5f5981_0 xlrd 1.1.0 py36h1cb58dc_1 xlsxwriter 1.0.2 py36hf723b7d_0 xlwings 0.11.4 py36hd3cf94d_0 xlwt 1.3.0 py36h1a4751e_0 yaml 0.1.7 vc14hb31d195_1 [vc14] zict 0.1.3 py36h2d8e73e_0 zlib 1.2.11 vc14h1cdd9ab_1 [vc14]
- 昨日のハンズオンでは、画像加工(グレースケール、ノイズ除去、輪郭抽出)のテクニックを教えて頂きました。
- 画像のデータサイズを減らすためにグレースケールにします。簡単に加工できちゃうんですね。
- ノイズ除去は、あえてごま塩にノイズを施したうえで、移動平均フィルタ, メディアンフィルタで除去を試します。初めて聞く言葉でした…。勉強になります。
- 輪郭抽出は、一旦グレースケールにした後で、判定しやすくするため色を2値化します。そのあとで輪郭抽出をするという流れです。
- 下記は、りんごの輪郭を抽出した結果の画像です。
- OpenCVの学習データを使用して、顔認識を行いました。Facebookやいろんなところで画像認識使われていますが、こんな風にやるんですね! 先ずは顔を認識するための学習データに価値があるということかと。
- 下記は、google画像検索から拝借したテスト画像を使って顔を認識させた結果です。左から2人目までは認識できましたが、3人目は顔が斜めを向いていて認識できませんでした。この学習データの精度がまだ低いという意味になります。
2. 機械学習ライブラリ「TensorFlow」と「Keras」で画像分類をしてみる
- 「TensorFlow」は最近IT関連の雑誌などでもよく見かけるキーワードですが、Googleが開発したオープンソースの機械学習ライブラリになります。
「Keras」は、オプション指定が高度なTensorFlowを触るためにあるライブラリのようです。初めて聞きました。
「TensorFlow」と「Keras」のどちらもOpenCVと同じで、Anaconda promptからインストールできます。
(C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda install tensorflow Solving environment: done ## Package Plan ## environment location: C:\Users\takaa\Anaconda3 added / updated specs: - tensorflow The following packages will be downloaded: package | build ---------------------------|----------------- certifi-2018.1.18 | py36_0 144 KB markdown-2.6.9 | py36_0 100 KB tensorflow-1.2.1 | py36_0 21.0 MB protobuf-3.4.1 | py36h07fa351_0 478 KB vs2015_runtime-14.0.25420 | 0 2.0 MB html5lib-0.9999999 | py36_0 178 KB bleach-1.5.0 | py36_0 22 KB libprotobuf-3.4.1 | h3dba5dd_0 1.9 MB openssl-1.0.2n | h74b6da3_0 5.4 MB backports.weakref-1.0rc1 | py36_0 8 KB ------------------------------------------------------------ Total: 31.2 MB The following NEW packages will be INSTALLED: backports.weakref: 1.0rc1-py36_0 libprotobuf: 3.4.1-h3dba5dd_0 markdown: 2.6.9-py36_0 protobuf: 3.4.1-py36h07fa351_0 tensorflow: 1.2.1-py36_0 The following packages will be UPDATED: certifi: 2017.7.27.1-py36h043bc9e_0 --> 2018.1.18-py36_0 openssl: 1.0.2l-vc14hcac20b0_2 --> 1.0.2n-h74b6da3_0 vs2015_runtime: 14.0.25123-hd4c4e62_2 --> 14.0.25420-0 The following packages will be DOWNGRADED: bleach: 2.0.0-py36h0a7e3d6_0 --> 1.5.0-py36_0 html5lib: 0.999999999-py36ha09b1f3_0 --> 0.9999999-py36_0 Proceed ([y]/n)? y Downloading and Extracting Packages certifi 2018.1.18: ############################################################################################ | 100% markdown 2.6.9: ############################################################################################### | 100% tensorflow 1.2.1: ############################################################################################# | 100% protobuf 3.4.1: ############################################################################################### | 100% vs2015_runtime 14.0.25420: #################################################################################### | 100% html5lib 0.9999999: ########################################################################################### | 100% bleach 1.5.0: ################################################################################################# | 100% libprotobuf 3.4.1: ############################################################################################ | 100% openssl 1.0.2n: ############################################################################################### | 100% backports.weakref 1.0rc1: ##################################################################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done (C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda install keras Solving environment: done ## Package Plan ## environment location: C:\Users\takaa\Anaconda3 added / updated specs: - keras The following packages will be downloaded: package | build ---------------------------|----------------- keras-2.1.3 | py36_0 476 KB The following NEW packages will be INSTALLED: keras: 2.1.3-py36_0 Proceed ([y]/n)? y Downloading and Extracting Packages keras 2.1.3: ################################################################################################## | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done (C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda list # packages in environment at C:\Users\takaa\Anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py36he6757f0_0 alabaster 0.7.10 py36hcd07829_0 anaconda custom py36h363777c_0 anaconda-client 1.6.5 py36hd36550c_0 anaconda-navigator 1.6.9 py36hc720852_0 anaconda-project 0.8.0 py36h8b3bf89_0 asn1crypto 0.22.0 py36h8e79faa_1 astroid 1.5.3 py36h9d85297_0 astropy 2.0.2 py36h06391c4_4 babel 2.5.0 py36h35444c1_0 backports 1.0 py36h81696a8_1 backports.shutil_get_terminal_size 1.0.0 py36h79ab834_2 backports.weakref 1.0rc1 py36_0 beautifulsoup4 4.6.0 py36hd4cc5e8_1 bitarray 0.8.1 py36h6af124b_0 bkcharts 0.2 py36h7e685f7_0 blaze 0.11.3 py36h8a29ca5_0 bleach 1.5.0 py36_0 bokeh 0.12.10 py36h0be3b39_0 boto 2.48.0 py36h1a776d2_1 bottleneck 1.2.1 py36hd119dfa_0 bzip2 1.0.6 vc14hdec8e7a_1 [vc14] ca-certificates 2017.08.26 h94faf87_0 cachecontrol 0.12.3 py36hfe50d7b_0 certifi 2018.1.18 py36_0 cffi 1.10.0 py36hae3d1b5_1 chardet 3.0.4 py36h420ce6e_1 click 6.7 py36hec8c647_0 cloudpickle 0.4.0 py36h639d8dc_0 clyent 1.2.2 py36hb10d595_1 colorama 0.3.9 py36h029ae33_0 comtypes 1.1.2 py36heb9b3d1_0 conda 4.4.8 py36_0 conda-build 3.0.27 py36h309a530_0 conda-env 2.6.0 h36134e3_1 conda-verify 2.0.0 py36h065de53_0 console_shortcut 0.1.1 h6bb2dd7_3 contextlib2 0.5.5 py36he5d52c0_0 cryptography 2.0.3 py36h123decb_1 curl 7.55.1 vc14hdaba4a4_3 [vc14] cycler 0.10.0 py36h009560c_0 cython 0.26.1 py36h18049ac_0 cytoolz 0.8.2 py36h547e66e_0 dask 0.15.3 py36h396fcb9_0 dask-core 0.15.3 py36hd651449_0 datashape 0.5.4 py36h5770b85_0 decorator 4.1.2 py36he63a57b_0 distlib 0.2.5 py36h51371be_0 distributed 1.19.1 py36h8504682_0 docutils 0.14 py36h6012d8f_0 entrypoints 0.2.3 py36hfd66bb0_2 et_xmlfile 1.0.1 py36h3d2d736_0 fastcache 1.0.2 py36hffdae1b_0 filelock 2.0.12 py36hd7ddd41_0 flask 0.12.2 py36h98b5e8f_0 flask-cors 3.0.3 py36h8a3855d_0 freetype 2.8 vc14h17c9bdf_0 [vc14] get_terminal_size 1.0.0 h38e98db_0 gevent 1.2.2 py36h342a76c_0 glob2 0.5 py36h11cc1bd_1 greenlet 0.4.12 py36ha00ad21_0 h5py 2.7.0 py36hfbe0a52_1 hdf5 1.10.1 vc14hb361328_0 [vc14] heapdict 1.0.0 py36h21fa5f4_0 html5lib 0.9999999 py36_0 icc_rt 2017.0.4 h97af966_0 icu 58.2 vc14hc45fdbb_0 [vc14] idna 2.6 py36h148d497_1 imageio 2.2.0 py36had6c2d2_0 imagesize 0.7.1 py36he29f638_0 intel-openmp 2018.0.0 hcd89f80_7 ipykernel 4.6.1 py36hbb77b34_0 ipython 6.1.0 py36h236ecc8_1 ipython_genutils 0.2.0 py36h3c5d0ee_0 ipywidgets 7.0.0 py36h2e74ada_0 isort 4.2.15 py36h6198cc5_0 itsdangerous 0.24 py36hb6c5a24_1 jdcal 1.3 py36h64a5255_0 jedi 0.10.2 py36hed927a0_0 jinja2 2.9.6 py36h10aa3a0_1 jpeg 9b vc14h4d7706e_1 [vc14] jsonschema 2.6.0 py36h7636477_0 jupyter 1.0.0 py36h422fd7e_2 jupyter_client 5.1.0 py36h9902a9a_0 jupyter_console 5.2.0 py36h6d89b47_1 jupyter_core 4.3.0 py36h511e818_0 jupyterlab 0.27.0 py36h34cc53b_2 jupyterlab_launcher 0.4.0 py36h22c3ccf_0 keras 2.1.3 py36_0 lazy-object-proxy 1.3.1 py36hd1c21d2_0 libiconv 1.15 vc14h29686d3_5 [vc14] libpng 1.6.32 vc14h5163883_3 [vc14] libprotobuf 3.4.1 h3dba5dd_0 libssh2 1.8.0 vc14hcf584a9_2 [vc14] libtiff 4.0.9 h0f13578_0 libxml2 2.9.4 vc14h8fd0f11_5 [vc14] libxslt 1.1.29 vc14hf85b8d4_5 [vc14] llvmlite 0.20.0 py36_0 locket 0.2.0 py36hfed976d_1 lockfile 0.12.2 py36h0468280_0 lxml 4.1.0 py36h0dcd83c_0 lzo 2.10 vc14h0a64fa6_1 [vc14] markdown 2.6.9 py36_0 markupsafe 1.0 py36h0e26971_1 matplotlib 2.1.0 py36h11b4b9c_0 mccabe 0.6.1 py36hb41005a_1 menuinst 1.4.10 py36h42196fb_0 mistune 0.7.4 py36h4874169_0 mkl 2018.0.0 h36b65af_4 mkl-service 1.1.2 py36h57e144c_4 mpmath 0.19 py36he326802_2 msgpack-python 0.4.8 py36h58b1e9d_0 multipledispatch 0.4.9 py36he44c36e_0 navigator-updater 0.1.0 py36h8a7b86b_0 nbconvert 5.3.1 py36h8dc0fde_0 nbformat 4.4.0 py36h3a5bc1b_0 networkx 2.0 py36hff991e3_0 nltk 3.2.4 py36hd0e0a39_0 nose 1.3.7 py36h1c3779e_2 notebook 5.0.0 py36hd9fbf6f_2 numba 0.35.0 np113py36_10 numexpr 2.6.2 py36h7ca04dc_1 numpy 1.13.3 py36ha320f96_0 numpydoc 0.7.0 py36ha25429e_0 odo 0.5.1 py36h7560279_0 olefile 0.44 py36h0a7bdd2_0 opencv 3.3.1 py36h20b85fd_1 openpyxl 2.4.8 py36hf3b77f6_1 openssl 1.0.2n h74b6da3_0 packaging 16.8 py36ha0986f6_1 pandas 0.20.3 py36hce827b7_2 pandoc 1.19.2.1 hb2460c7_1 pandocfilters 1.4.2 py36h3ef6317_1 partd 0.3.8 py36hc8e763b_0 path.py 10.3.1 py36h3dd8b46_0 pathlib2 2.3.0 py36h7bfb78b_0 patsy 0.4.1 py36h42cefec_0 pep8 1.7.0 py36h0f3d67a_0 pickleshare 0.7.4 py36h9de030f_0 pillow 4.2.1 py36hdb25ab2_0 pip 9.0.1 py36hadba87b_3 pkginfo 1.4.1 py36hb0f9cfa_1 ply 3.10 py36h1211beb_0 progress 1.3 py36hbeca8d3_0 prompt_toolkit 1.0.15 py36h60b8f86_0 protobuf 3.4.1 py36h07fa351_0 psutil 5.4.0 py36h4e662fb_0 py 1.4.34 py36ha4aca3a_1 pycodestyle 2.3.1 py36h7cc55cd_0 pycosat 0.6.3 py36h413d8a4_0 pycparser 2.18 py36hd053e01_1 pycrypto 2.6.1 py36he68e6e2_1 pycurl 7.43.0 py36h086bf4c_3 pyflakes 1.6.0 py36h0b975d6_0 pygments 2.2.0 py36hb010967_0 pylint 1.7.4 py36ha4e6ded_0 pyodbc 4.0.17 py36h0006bc2_0 pyopenssl 17.2.0 py36h15ca2fc_0 pyparsing 2.2.0 py36h785a196_1 pyqt 5.6.0 py36hb5ed885_5 pysocks 1.6.7 py36h698d350_1 pytables 3.4.2 py36h71138e3_2 pytest 3.2.1 py36h753b05e_1 python 3.6.3 h9e2ca53_1 python-dateutil 2.6.1 py36h509ddcb_1 pytz 2017.2 py36h05d413f_1 pywavelets 0.5.2 py36hc649158_0 pywin32 221 py36h9c10281_0 pyyaml 3.12 py36h1d1928f_1 pyzmq 16.0.2 py36h38c27d9_2 qt 5.6.2 vc14h6f8c307_12 [vc14] qtawesome 0.4.4 py36h5aa48f6_0 qtconsole 4.3.1 py36h99a29a9_0 qtpy 1.3.1 py36hb8717c5_0 requests 2.18.4 py36h4371aae_1 rope 0.10.5 py36hcaf5641_0 ruamel_yaml 0.11.14 py36h9b16331_2 scikit-image 0.13.0 py36h6dffa3f_1 scikit-learn 0.19.1 py36h53aea1b_0 scipy 0.19.1 py36h7565378_3 seaborn 0.8.0 py36h62cb67c_0 setuptools 36.5.0 py36h65f9e6e_0 simplegeneric 0.8.1 py36heab741f_0 singledispatch 3.4.0.3 py36h17d0c80_0 sip 4.18.1 py36h9c25514_2 six 1.11.0 py36h4db2310_1 snowballstemmer 1.2.1 py36h763602f_0 sortedcollections 0.5.3 py36hbefa0ab_0 sortedcontainers 1.5.7 py36ha90ac20_0 sphinx 1.6.3 py36h9bb690b_0 sphinxcontrib 1.0 py36hbbac3d2_1 sphinxcontrib-websupport 1.0.1 py36hb5e5916_1 spyder 3.2.4 py36h8845eaa_0 sqlalchemy 1.1.13 py36h5948d12_0 sqlite 3.20.1 vc14h7ce8c62_1 [vc14] statsmodels 0.8.0 py36h6189b4c_0 sympy 1.1.1 py36h96708e0_0 tblib 1.3.2 py36h30f5020_0 tensorflow 1.2.1 py36_0 testpath 0.3.1 py36h2698cfe_0 tk 8.6.7 vc14hb68737d_1 [vc14] toolz 0.8.2 py36he152a52_0 tornado 4.5.2 py36h57f6048_0 traitlets 4.3.2 py36h096827d_0 typing 3.6.2 py36hb035bda_0 unicodecsv 0.14.1 py36h6450c06_0 urllib3 1.22 py36h276f60a_0 vc 14 h2379b0c_2 vs2015_runtime 14.0.25420 0 wcwidth 0.1.7 py36h3d5aa90_0 webencodings 0.5.1 py36h67c50ae_1 werkzeug 0.12.2 py36h866a736_0 wheel 0.29.0 py36h6ce6cde_1 widgetsnbextension 3.0.2 py36h364476f_1 win_inet_pton 1.0.1 py36he67d7fd_1 win_unicode_console 0.5 py36hcdbd4b5_0 wincertstore 0.2 py36h7fe50ca_0 wrapt 1.10.11 py36he5f5981_0 xlrd 1.1.0 py36h1cb58dc_1 xlsxwriter 1.0.2 py36hf723b7d_0 xlwings 0.11.4 py36hd3cf94d_0 xlwt 1.3.0 py36h1a4751e_0 yaml 0.1.7 vc14hb31d195_1 [vc14] zict 0.1.3 py36h2d8e73e_0 zlib 1.2.11 vc14h1cdd9ab_1 [vc14] (C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>
- あらかじめ準備した訓練用のりんご、オレンジの画像を読み込ませ学習します。一つの訓練データを何回も繰り返し読み学習します。その回数をエポック(epoch)数と言います。読み込む回数が多いと過学習になるようで、逆に認識率が下がります。他にもニューロン数や各データとの関連性も重要な要素とのことです。詳しくは、これから勉強しようと思います。
- ちなみに、今の訓練データからは、青りんごは残念ながらオレンジと判定されました…。
3.人工知能API「IBM Watson」で画像解析をしてみる
- 後日、復習の上レポートしたいと思います!!!
Dell製 ノートPC(Windows 10) におけるタッチパッドの動作変更について
昨年末に購入したDell製 ノートPC のセットアップについての記録です。
- 昨年末に、Dellのストアにて、ノートPC Inspiron 5570を購入しました。OSは、Microsoft Windows 10 Home (64bit)です。
みなさんはノートパソコンでキー入力時にタッチパッドに手が当たり、誤操作しちゃったことありませんか? 特にマウスが接続されているにも関わらず、タッチパッドも有効になっているのは意味がありませんよね。
タッチパッドの設定変更
- スタートメニューを押します
- 設定ボタンを押します
‐ Windowsの設定画面が開きます
‐ 「マウスの接続時にタッチパッドをオフにしない」のチェックを外します
Windows 10 におけるファンクションキーの動作変更について
昨年末に購入したDell製 ノートPC のセットアップについての記録です。
- 昨年末に、Dellのストアにて、ノートPC Inspiron 5570を購入しました。OSは、Microsoft Windows 10 Home (64bit)です。
- みなさんは、ノートパソコンのキーボード最上段にある[F1]~[F12]のファンクションキーを使用していますか?
dynabook.com | サポート情報 | [FN]キーを使った特殊機能キーの操作について<Windows(R)7>
- 今回購入したDell製 ノートPCのWindows 10は、[F1]~[F12]を単独で押した場合に特殊機能キーとなり、[Fn]キーと[F1]~[F12]を同時押しの場合ファンクションキーの動作になりました。(つまり、Windows 7までと逆の動作になります)
- 以下に、[Fn]キーと[F1]~[F12]を従来の動作に変更する方法を記載します。
[Fn]キーと[Esc]キーと同時押しするだけです
- 特に[Fn]キーと[Esc]キーと同時押ししても画面には何も表示されません。
- しかし、これだけで、[Fn]キーと[F1]~[F12]を押した場合の動作が従来の動作に変わります。