名無し.ch

教育のこととか化学のこととか機械学習のこととか、気の向くままにいろいろ書いてみようと思います。

Minicondaでpipの更新

体調は…やや復活?

昨日は完全にダウンしていたので、何もしていなかったが、
今日は薬の力でやや復活したので、ちょっとは頑張ろう!ということで、
以前ちょっと目にして何もしていなかった、pythonからExcelを操作する、というのを
試してみようと思いました。  …が。

とりあえず、パッケージをインストール! するも。。。

コマンドは簡単。

pip install openpyxl

こんだけ。ですが。

You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

pipのバージョンがめっちゃ古いよ!って怒られた。
miniconda入れたままだったので、仕方ないね。
最近はGoogle Colaboratoryで遊んでたし。

じゃあ、condaごとupdateしよう!

ということで、condaでupdateできるものを探してみた。
コマンドは簡単で、

conda update conda

とやれば、勝手にupdateできるパッケージがないか検索してくれる。
ちなみに、家の環境では、

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cryptography-2.3.1         |   py36h7a1dbc1_2         522 KB
    certifi-2018.10.15         |           py36_0         138 KB
    conda-4.5.11               |           py36_0         1.0 MB
    vs2015_runtime-14.15.26706 |       h3a45250_0         2.2 MB
    openssl-1.1.1              |       he774522_0         5.7 MB
    vc-14.1                    |       h0510ff6_4           6 KB
    pip-18.1                   |           py36_0         1.8 MB
    ------------------------------------------------------------
                                           Total:        11.5 MB

The following packages will be UPDATED:

    certifi:        2018.4.16-py36_0     --> 2018.10.15-py36_0
    conda:          4.5.4-py36_0         --> 4.5.11-py36_0
    cryptography:   2.2.2-py36hfa6e2cd_0 --> 2.3.1-py36h7a1dbc1_2
    openssl:        1.0.2o-h8ea7d77_0    --> 1.1.1-he774522_0
    pip:            10.0.1-py36_0        --> 18.1-py36_0
    vc:             14-h0510ff6_3        --> 14.1-h0510ff6_4
    vs2015_runtime: 14.0.25123-3         --> 14.15.26706-h3a45250_0

Proceed ([y]/n)? y

と出たので、yを入力すれば、基本的にはアップデートされるはず!

…が!

Downloading and Extracting Packages
cryptography-2.3.1   |  522 KB | ############################################################################## | 100%
certifi-2018.10.15   |  138 KB | ############################################################################## | 100%
conda-4.5.11         |  1.0 MB | ############################################################################## | 100%
vs2015_runtime-14.15 |  2.2 MB | ############################################################################## | 100%
openssl-1.1.1        |  5.7 MB | ############################################################################## | 100%
vc-14.1              |    6 KB | ############################################################################## | 100%
pip-18.1             |  1.8 MB | ############################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: failed
ERROR conda.core.link:_execute(502): An error occurred while uninstalling package 'defaults::conda-4.5.4-py36_0'.
PermissionError(13, 'アクセスが拒否されました。')
Attempting to roll back.

Rolling back transaction: done

PermissionError(13, 'アクセスが拒否されました。')

Ooops!
Windowsじゃやっぱりアレかぁ。。。

ちなみに、管理者権限でanaconda promptを立ち上げても解決せず。。。

やっぱり、Windowsで頑張るには、仮想環境に頼るしかないのかな。

風邪と本業の狭間でどうしよう?

今日のおさらい。

しまった! 風邪ひいた!

まさに今日のことです。
朝から鼻水が出ていて、ヤバいなぁー、と思ったわけですが、
昼過ぎから本格的に体調が悪化…

仕方がないので、午前中の模試の監督だけこなして
午後の会議はすっ飛ばし、帰宅して薬飲んで昼寝しました。

多少良くなったものの、あまり変わらず…

というわけで、今日はコーディングはお休みですね。。。

迫る研究授業

しかし、研究授業を来週金曜11/9に設定したのは自分です。
やることは決まっているので、校内の他の先生に告知したり、
指導案を作成して配ったりしなくてはいけないというのに…

とりあえず、今日のところは寝て、明日できたらがんばりましょう。

今日やったこと

  • 「総合的な探究の時間」の指導要領解説をDL。127ページまで読んだ。

これからやらないといけないこと

  • 「総合的な探究の時間」の指導要領解説を読み切る
  • チームビルディングや、問題解決の手法を学んで、方法やメリット・デメリットをまとめる

TensorFlowスタートガイドをGoogle Colaboratoryで。

f:id:nama-pit:20181101234158j:plain

やっぱりMachine LearningやるならTensorFlowに触りたい!

こんな願望、みんなありますよね。
地道に写経してたんですけど、やっぱりどうせならTensorFlowやりたい!
だってGoogle ColaboratoryではTPUも使えるんだもん!
という駄々っ子のような論理(感情)に押されて、Machine Learningをちょっとすっ飛ばして
TensorFlowやってみました。

やってみた感想

正直、写経しただけなので、「こうすれば動くんだ!」とか
「こうすれば学習ができるんだ!」とか
「学習が足りない時はepochを増やすと繰り返し学習して、学習した範囲での予測精度が上がる!」とか
まぁその程度です。
でも、この前まで機械学習でsklearnとかPerceptronとか頑張ってやってたのが
嘘みたいに簡単にかけたので、それだけでもめちゃめちゃ感動しました。
やっぱりTensorFlowはすごい!

一気に主流に上り詰めたのも分かるなぁ。

動かしてみたコード

TensorFlowスタートガイドにある最初のmnist

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation = tf.nn.relu),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation = tf.nn.softmax)
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

TensorFlowスタートガイドのbasic classification

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import numpy as np
import matplotlib.pyplot as plt

print(tf.__version__)


fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()


class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

train_images.shape


len(train_labels)


train_labels



plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)


train_images = train_images / 255.0

test_images = test_images / 255.0


plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])


model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])


model.compile(optimizer=tf.train.AdamOptimizer(), 
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])


model.fit(train_images, train_labels, epochs=15)


test_loss, test_acc = model.evaluate(test_images, test_labels)

print('Test accuracy:', test_acc)


predictions = model.predict(test_images)


predictions[0]


np.argmax(predictions[0])


def plot_image(i, predictions_array, true_label, img):
  predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  
  plt.imshow(img, cmap=plt.cm.binary)

  predicted_label = np.argmax(predictions_array)
  if predicted_label == true_label:
    color = 'blue'
  else:
    color = 'red'
  
  plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                100*np.max(predictions_array),
                                class_names[true_label]),
                                color=color)

def plot_value_array(i, predictions_array, true_label):
  predictions_array, true_label = predictions_array[i], true_label[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1]) 
  predicted_label = np.argmax(predictions_array)
 
  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')


i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)


i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)


# Plot the first X test images, their predicted label, and the true label
# Color correct predictions in blue, incorrect predictions in red
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
  plt.subplot(num_rows, 2*num_cols, 2*i+1)
  plot_image(i, predictions, test_labels, test_images)
  plt.subplot(num_rows, 2*num_cols, 2*i+2)
  plot_value_array(i, predictions, test_labels)


# Grab an image from the test dataset
img = test_images[0]

print(img.shape)


# Add the image to a batch where it's the only member.
img = (np.expand_dims(img,0))

print(img.shape)


predictions_single = model.predict(img)

print(predictions_single)


plot_value_array(0, predictions_single, test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)


np.argmax(predictions_single[0])

 MIT License
#
# Copyright (c) 2017 François Chollet
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

最近流行らないけど、Jazzバンドカッコよくないですか?

今日は、仕事が忙しすぎて落ち着いてコーディングできない感じなので、

最近音楽について思ってることをとりあえずつらつらと書いてみようと思います。

 

 

インストバンドはカッコいい!

 

何だかんだ言う前に、とりあえずお聞きください。

 

CASIOPEA × 本多俊之 DAZZLING - YouTube

 

どうですか?

こんな感じの、フュージョン系のバンド、最近は流行ってませんが、

カッコよくないですか?

 

フロントに立ってる本多俊之も、Jazzをよく理解しているプレイヤーで

このライブではかなりギラギラしたメタル系の音で合わせていますし、

正直下手なボーカル聞くより断然イイと思います。

 

だがしかし、流行らない

なぜでしょう?

敷居、高いですか?

やっぱり、歌詞がない音楽はだめですか?

どうやったら、色んな人とこの魅力をシェアできるでしょうか。

 

Jazz fusionの世界で、国内で最もメジャーなのは、

The SQUAREではないでしょうか?

吹奏楽ではおなじみの、「宝島」や「オーメンズ・オブ・ラブ」なんかのオリジナルを作ったバンドですね。

これは、吹奏楽の作・編曲者として有名な故・真島俊夫氏のアレンジも素晴らしいため、

今も広く演奏されているためかと思います。

 

やっぱり、自分で吹奏楽アレンジを書いてみたほうがいいんですかね…

Paizaで機械学習の基礎?

# PaizaラーニングのPython × AI・機械学習入門編 が期間限定無料だと…

朝からそんなメールを見てしまい、釣られてしまいました。
興味のある方はこちらから。

paiza.jp


# 正直な感想

正直、既にやったことの復習しかなく、満足できるようなレベルではありませんでした。
入門って、これで入門でいいのか?!っていうレベルです。
動画を途中まで見て、余計なセリフにイライラした気持ちも我慢したのが無駄でした。

というわけで、問題だけサクッとやって、もう今日は終わり。


久しぶりのPaizaスキルチェック&AOJ競技プログラミング

Python Coding on Visual Studio Code.
Python Coding

昨日は偉そうなことを言ったくせに…

はい、すみません。 今日も引き続きMachineLearningをGoogle Colaboratoryでやってみよう!なんて言いました。 ごめんなさい!!

今日は、1日部屋を片付けて、厚さ1mくらいの紙ゴミと90Lの袋4つ分の古着をまとめ、 その副産物として90L袋5つ分のごみをまとめました。 どれだけゴミをため込んでいたのかって言う話ではありますが、 まだ机を廃棄するという大物が待っているので、こいつらを収集日に処分してから、 粗大ごみ廃棄の連絡をしなくてはいけないでしょうね。。。

というわけで、今日は落ち着いた時間が取れなかったので、Python機械学習プログラミングはあきらめて 小物でスキルチェック&ちょっとした遊びをやってみよう!の精神です。

Paizaスキルチェック

二つほどやりました。どっちも3分以内でしたね。 もはやPaizaのCとかDランクは簡単すぎてやる気が出ないレベルです。 Dの方は、単に新作だからやっただけですけどね…

Aizu Online Judgement

AOJの方は、今日はUniversity of Aizu Programming Contestから1問。

UOA_PCKWU_1041 をやってみました。

[f:id:nama-pit:20181029232322p:plain]
while True:
    n = int(input())

    if n == 0:
        break
    
    on_mark = 0

    for i in range(int(n/4)):
        on_mark += int(input())
    
    print(on_mark)

たぶん、会津大学内で普通に扱っているのがC++なんでしょうね。 もはや9年前に公開された問題にも関わらず、Python3で正解した人は私でたったの12人です。 正解者850人もいるのに!!

まぁ、競技プログラミングPythonでやろうなんて、crazyですよね。 動作速度を考えたら、CかGoでしょう。

でも、いいんです。目標は競技プログラミングじゃなくて、あくまで機械学習&人工知能なので。

そんなこんなの1日。

というわけで、今日はあまりPCに向かっていないし体も動かしたので、健康的な1日だった気がします。 明日から怒涛の18連勤。もはや労基も真っ青のブラック企業ですが、あきらめましょう!! 合間を縫って少しでも勉強できるようにがんばります。

せめて、職場のPCからGoogle Driveが開ければ、ローカル環境なくてもGoogle Colabで遊べるのになぁ… 仕事に集中しろってことか。

Python機械学習プログラミング on Google Colaboratory chap.2

f:id:nama-pit:20181029065224p:plain

なぜGoogle Colaboratory?

以前、Python機械学習プログラミングをやってみた。 しかし、ローカル環境はほぼWindowsなので、Anacondaを入れたりVisual Studio Codeを入れたり色々やってみたものの、いい感じに連動してくれないし、毎回Jupyter Notebookを立ち上げるのも面倒だし、学習させる間の負荷がでかい…

ということで頓挫していたのですが、Google Colaboratoryの存在を知り、さらにGoogle ColaboratoryでTPUが使えるようになっているということも知り、「じゃあやってみよう!」ということで、Google DriveGoogle Colaboratoryを使って機械学習の勉強をしてみよう!ということにした。

さっそくchap.2やってみた。

ソースはこちら。

drive.google.com

正直、ただの写経だ。

面白かったところ。

数学は、正直式を追うので精いっぱいだったが、これは仕方がないだろう。 でも、パーセプトロンの分類器から始まり、Adalineに進歩し、さらに収束をよくするために重みづけの方法を変更し…といくと、明らかに少ないコストで予測が成り立つようになるので、非常に面白い。最後のAdalineSDGなんかは、4回くらいでほぼ学習コストが横ばいになり、収束していくのが見えて感動した。 明日以降も、ちょいちょい頑張っていきたい。