[Windows10] コントロールパネルの場所

コントロールパネルはいずこへ…(;^ω^)

Windows10を使ってかなり経ちますが、以前の見慣れたコントロールパネルを出したくて、何となく探したことありませんか?

コントロールパネルが無くても、Windows10 仕様の「設定」アプリでも、そこまで困ることは無いのですが…

Windows10 で Windows マーク(スタートメニューを出すマーク)を押した際の一覧に
「コントロールパネル」は無いんですねー

代わりに、「設定」なるものが…

ちゃうねん、これちゃんねん(/ω\)

検索すると、マイクロソフトさんの公式サポートサイトでも、ちゃんと書かれてました

普通に、スタートメニューを押した後に
「コントロール」or「Control」で検索すると候補に出てきます

ちなみに「コントロール パネル」で検索する時には、「コントロール」と「パネル」の間には半角空白が必要みたい…

これこれ…( ^ω^ )


[Unity] エディタ上でゲーム実行中にエディタの色を変える

Unityエディタ上で、ゲームを実行中(再生中)に、色を変える設定です
// Unity的には「プレイモード」と呼ぶみたいです

上記公式動画↑↑↑の 20秒~32秒くらいの間で、設定の操作を教えてくれてます

いちおここにも書いておくと

Edit > Preferences > Colors > Playmode tint

で実行中のエディタの色を変えることが出来ます

いつも、Unityをインストールして最初にやってるんだけど、
いつも忘れて結局調べてるので…(*ノωノ)


[PowerShell] ZoneIDとPowerShellの実行ポリシー

PowerShellでちょっとしたツールを動かそうと思って、初歩的なところであれ?となったので、書いておきます

PowerShellの実行ポリシー(Execution Policy)は、

1
> Get-ExecutionPolicy

このコマンドで確認できます

Windows10のデフォルトでは Restricted になっていて、ps1 ファイルをコマンドライン上から実行することが出来ません
なので

1
> Set-ExecutionPolicy RemoteSigned

を実行して、 RemoteSigned にセキュリティポリシーを変更します

しかし、RemoteSigned になってることを確認したのに、
しかしなぜか、ps1 ファイルの実行時にセキュリティエラーとなってしまいました

なんだこれ(↓)は…?

1
セキュリティ エラー: PSSecurityException

なんでだろーと思ってたのですが、何てことはない
実行しようとしてた ps1 ファイルは、インターネット越しに入手したものでした
(自分のサイトから落としてきたんだけどね)

こんな感じ↓↓↓

どうやら、インターネット越しに入手したファイルには ZoneID というのが付与されるらしく
Windowsはローカルファイルと区別出来るようにしてくれてるんですね~

ローカルファイルとして扱いたい時には、ポチっと「ブロックの解除」を押せばOKです

ちゃんと、ps1 ファイルが動作するようになりました(^^♪

ZoneID…知らなかった…><。

参考:
- WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する - @IT
http://www.atmarkit.co.jp/ait/articles/0805/16/news139.html


[Android] 謎のエラー「Unable to start debugging.」が出たときの対応

Androidデバッグで実行時エラー

環境

ある時…Visual Studio で作っている Android プロジェクトが、実行時エラーになりました

Unable to start debugging. Check your debugger settings by opening project properties and navigating to ‘Configuration Properties–> Debugging’

デバック出来ないからね!プロジェクトの設定見てね!的な意味みたいですが
デバッグモードで動かしてるし…
一体どこの何の事を言ってるのか判らない…><。

リリースモードならOKなのかしら?と思っても、同様のエラー”(-“”-)”

解決案(わたしはこれでは解決しませんでしたが)

検索しても、実のある回答は特に出てこず…
唯一、解決っぽいのが、NVIDIAさんのフォーラムに載ってました

元ネタリンクはMicrosoftさんのGitHub情報みたいです

簡単に言うと、VSの Developer Command Prompt を使って、キャッシュクリアしてみたら?というもの
やってみました

  1. Developer Command Prompt を検索して立ち上げる

  2. 以下のコマンドを打つ

Devenv /UpdateConfiguration
Devenv /ClearCache

もっともらしい対策なんですけど、わたしの実行時エラーは解決しませんでした
何がダメなのだろ…((+_+))

わたしが解決した方法

で、実際の解決策ですが…
すみません、散々あーだこーだ書いてますが
スタートアッププロジェクトの設定もれ でした…( ;∀;)
いやはや、お恥ずかしい…

Androidプロジェクトが参照する、別のプロジェクト達が
同じソリューションファイルの中に複数存在しています

なのに、Androidプロジェクトを起動プロジェクトに設定しておらず…

ポカミスとはまさにこの事!( ;∀;)

なぜこれに気が付かなかったのか…相当焦ってて、周りが見えてなかったみたいです

二度と同じ過ちを繰り返さないように…><。
あと、同様のエラーで困ってる人の何かしらの参考になればと思います><。


[Android] Hyper-Vで使うVisual Studio Emulator for Androidの最初の一歩

どうもうまくAndroidエミュレータが動かない…

いわゆる ADV Manager をつかって、Androidをエミューレートしたいのですが
なぜかうまく起動しない…

環境

Android SDK Managerをよく見てみると、HAXM installer が “Not compatible with Windows” となっています

ふむ…
無理矢理 HAXM のインストーラーをダウンロードしてきても、こんな感じでエラー

This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively used by Hyper-V, HAXM cannot be installed.
Please ensure Hyper-V is disabled in Windows Features, or refer to the Intel HAXM documentation for more information.

なんですと…Hyper-Vが入ってたら使えないよだと…(`・ω・´)

ワタクシ、Android 開発のために手元の Hyper-V を辞める事は出来ないデスヨ!
調べてみると「Visual Studio Emulator for Android」というHyper-Vベースで動くエミュレーターが用意されているらしいので設定してみました

Visual Studio Emulator for Android

すでに色んな方が同じ様な記事を書かれていますが、わたくしも今一度、再確認でございます…

1. まず、Hyper-V が有効なこと

(Control Panle > Programs and Features > Turn Windows features on or off)

2. Visual Studio 2017のインストーラーで「Visual Studio Emulator for Android」を選択すること

下の図では「Google Android Emulator」「HAXM」も選択してますが、はっきり言って
この2つと、「Visual Studio Emulator for Android」は、排他の関係にあるので
「Visual Studio Emulator for Android」だけ選択でOK

3. 「Visual Studio Emulator for Android」を立ち上げる

検索すると、インストールされてます

立ち上げたらこんな画面

これでまずは準備完了

エミュレーターの起動

1. 空のプロジェクトを作る

わたしはC++で開発したかったので、Androidプロジェクトの「Native-Activity Application (Android)」で新規作成しました

デバックメニューに「Visual Studio Emulator for Android」の欄が増えてますね

(注意!)「x86」を選択しないと、このエミュレーターは出てきません!

2. 「Visual Studio Emulator for Android」でAndroidを起動させる

先ほど立ち上げた「Visual Studio Emulator for Android」のメニューより、緑の三角印を押して、エミュレーターを起動させます

起動できた(`・ω・´)

エミュレーターが起動しない時

最初、わたしはエミュレーターが起動途中でストップしてしまいました(-_-)zzz

The emulator is unable to connect to the device operating system:
Could’t auto-detect the guest system IP address.
Some functionality might be disabled.

なんじゃこりゃ…(´・ω・`)
IPうんぬんと書かれてるので、NWプロパティを見てみます

Conrtol Panel
 > Network and Internet
  > Network Connections

Hyper-Vが「Visual Studio Emulator for Android」のために作ったと思われるアダプターがありました

わたしの場合
vEthernet (Internal Ethernet Port Windows Phone Emulator Internal Switch)
という名前です

IPv4プロパティを見てみると、変なIPアドレスが割り当てられてる…?
慌てて削除し、動的に変更する設定に変えます↓↓↓

いちお、NWアダプタは「識別されてないネットワーク」状態ですが
エラー表示にはなっていません

この状態で、エミュレーターを起動させると、無事立ち上がりました(^^)良かった!

エミュレーターでデバックする

VSに戻ってみると、こんな感じでエミュレーターがデバックで使えるようになってます!

VSからデバック実行させると

サンプルが動作しました

この状態でブレークポイントも効くので、まずは最初の設定完了って感じでしょうか
パチパチ(^^)

※ちなみに実機でデバックする時には、「x86」じゃなくて「ARM」など、その実機に合ったCPUを選択したらOKです


[Unity] 常にカメラの前にSpriteを出す

Unityでカメラに追従して、前面にSpriteを出す方法

これ、本当は、カメラの子供として指定すればもっと簡単なんですけど…

testScript.transform.parent = Camera.main.transform

この場合、
カメラにアニメーションが付いてる時(メインカメラは固定ポジションのままの時)に
うまく乗せられなかったりして、
面倒だなーと思い、Update毎に自分で位置を更新することにしました
(変に親子関係があるのも、後で何か制限されたらやだなーとかとかもあり…)

以下を参考にしたら、簡単にカメラの前に表示するスプライトを簡単に表現できました

public class TestExecutor : MonoBehaviour
{
    private Texture2D blackTexture;
    private SpriteRenderer testSprite;

    void Start()
    {
        // Create black texture
        blackTexture = new Texture2D(32, 32, TextureFormat.RGB24, false);
        blackTexture.SetPixel(0, 0, Color.white);
        blackTexture.Apply();

        // Create Sprite
        var sprite = Sprite.Create(
          texture: blackTexture,
          rect: new Rect(0, 0, blackTexture.width, blackTexture.height),
          pivot: new Vector2(0.5f, 0.5f)
        );

        // スクリプトからSprite生成
        testSprite = new GameObject("TestSprite").AddComponent<SpriteRenderer>();
        testSprite.sprite = sprite;
    }

    void Update()
    {
        var distance = 10f;

        // カメラの前に置く距離に応じて、ワールド座標でのスクリーンサイズを求める
        // (distance +1f) の意味は、スクリーンサイズよりちょい大きめで画面を覆いたいから
        var worldScreenH = 2.0f * (distance + 1f) * Mathf.Tan(Camera.main.fieldOfView * 0.5f * Mathf.Deg2Rad);
        var worldScreenW = worldScreenH * Camera.main.aspect;

        // Spriteのサイズを調整
        testSprite.transform.localScale = new Vector3(worldScreenW / testSprite.sprite.bounds.size.x, worldScreenH / testSprite.sprite.bounds.size.y);

        // カメラの角度と位置をコピー、前に置くだけならforwardベクトルが便利
        testSprite.transform.position = Camera.main.transform.position + testSprite.transform.forward.normalized * distance;
        testSprite.transform.rotation = Camera.main.transform.rotation;
        
        // フェードとかさせたいなら、ここでαを調整
        testSprite.color = new Color(0, 0, 0, fadingAlpha);
    }
}

Gist - Unity Sprite on front of camera

こんな感じで、Spriteがカメラにくっついてきてくれます

忘れそうな自分へのメモ


[SSH] ポート指定GitサーバにSSHでアクセスできない時(Windows/GitExtensions)

最近…

機械学習関係をやってたんですけど、Unityをまた触ることになっています
てんやわんやして、前回更新から2カ月も経ってしまった…(+o+)

今回また、タイトル名のGit/SSH関係でオロオロしたので、同現象で困ってる人の助けになれば幸いです

(現象)初回SSH接続に失敗する

環境

こんな環境で作業していました(古いPCからアクセスしたかったので、Win7なのです…)

  1. 初回クローンするために、Gitサーバにアクセスしようと、秘密鍵を .ssh ディレクトリ以下にコピーしておきます
    デフォルトのSSH秘密鍵置き場は
    c:\Users[ユーザ名].ssh/id_rsa
    です

  2. GitExtensionsを利用してGitリポジトリからクローンしようとすると、以下のエラーが…

fatal: Could not read from remote repository.
Please make sure you have the correct access rights and repository exists.

え、なんで…?

(解決)ポート番号ありでknown_hostsに登録する

アドレスも合ってる!
リポジトリもある!
サーバには公開鍵、クライアントには秘密鍵を置いてる!

これでなぜアクセス出来ないのか、解明に半日かかってしまいました…トホホ
自分のインフラ力の無さに涙が出そうです

答えを書きますと、

これで解決しました…(^_^;)

わたしの場合のポイントは、ポート指定でした


  1. コマンドプロンプトを立ち上げます
    わたしの場合、GitExtensionsを使ってたので Tools > Git bash から立ち上げました

  2. SSH のテスト接続を行います

$ssh git@[サーバアドレス] -p [SSHアクセスのポート番号]

そしたら、

Are you sure you want to continue connecting (yes/no)?

と聞かれるので、すかさず yes を!
c:\Users[ユーザ名].ssh\known_hosts にアクセス情報が登録されます

これで GitExtensions に戻って新規クローン開始したら、拒否されることなくソースを取得できました!

まとめ

最初に、

$ssh git@[サーバアドレス]

この状態で接続テストしてたんですけど、足りてないみたいでした

たったこれだけなんですけど、あまり情報が乗ってなかったように思いますので
未来の自分へのメモ…


[TensorFlow] TensorFlow on Windows GPU版インストール方法

前回、TensorFlowの環境を作るために、Anacondaをインストールしました

その続きで、TensorFlow GPUバージョンを入れたいと思います

わたしの環境は以下です

はじめに…

TensorFlow公式サイトのインストール方法では、残念ながらうまく動作させることは出来ませんでした…(´・ω・`)

どこを見たら良いかというと、TensorFlowのGitHubの方 です…!!!
ここ見るべし(。-`ω-)クワワッ

今回の全インストールログは、わたしのGistにアップしておきました
Install_log_on_Windows_for_TensorFlow_GPU.log

では、やった手順を記載します!

1) NVIDIA CUDA Toolkit をインストールする

TensorFlowにはCPU版とGPU版が提供されています

CPUのみでも動くのですけど
開発環境の構築というのはなんともめんどくさいので
最初に出来る事をやっとくことにします

まずは、CUDA のインストール
※CUDAとは、GPUを活用するための開発環境です
 GPUを使うには、NVIDIAのCUDAを入れる必要があります

わたしは Visual Studio 2017 を入れているのですが、まだサポートされてないよ って出ました

NVIDIA の公式によると、2017/4/10時点では
Visual Studio 2015 の VC++14.0 まで対応しているみたいです

NVIDIAのドライバも更新されるため、何度かチラチラと画面が黒くなりますが
それ以外は特に問題もなく、Toolkitのインストールは完了します

2) NVIDIA Developer Membership に登録する

さて、続いて cuDNN をインストールする必要があります

cuDNN は The NVIDIA CUDA Deep Neural Network library の略
つまりCUDAのライブラリ群です

cuDNNをダウンロードするには、NVIDIA Developer Membership に登録する必要があります(登録だけなら、お金は要らなかった)
登録時に簡単な Survey がありますので、良しなに記載しておきます

登録完了すると、速攻で

「Please confirm your email to join the Accelerated Computing Developer Program」

という件名のメールが飛んできました
中のリンクをクリックしたら、登録完了です

こんな感じで NVIDIA Developer Membership への登録は瞬殺で終わりました

3) NVIDIA cuDNN をインストールする(正確にはパスを通す)

登録が済んだら、cuDNN をダウンロード出来ます
※ここでもまた、Survey があります(^^;

先ほどインストールした CUDA Toolkit は 8.0 なので、それに対応した cuDNN v6.0 を選択!

2017/4/17追記:
cuDNN6.0には 後程記述する cudnn64_5.dll が入っておらず
現時点ではTensorFlowのインポートでエラーが出ます
cuDNN v5.1 をダウンロードして、回避しました
scimprさん、教えて下さってありがとうございました

落としてきたのはただのZIPファイルなので、展開し、好きなディレクトリに設置します
わたしの場合は、 D:\Library\cuda というディレクトリを作って置きました

もしくは、cuda と cuDNN のバージョンは必ず一致しないと行けないようなので
cudaのインストールパス
(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin)
に手コピーするのも、一つの手らしいです
cudaディレクトリにコピーした人はパスを設定しなくていいので、以下は飛ばしてください

このパス(わたしの場合、D:\Library\cuda\bin)が Anaconda 環境から見えるように、Windowsのパスを設定しておきます
パスを通すのくらいは…と思いましたが、ついでにキャプチャは取ったので、それだけ載せておきますね

コントロールパネルのシステムを開く

システムプロパティの環境設定を開く

自分の環境設定のパスを編集する

パスを新規追加

一応、パスが通ってることを path コマンドでチェックしとく

ま、こんな感じです

4) TensorFlow on Windows (GPU) のインストール

いよいよ TensorFlow のインストールを行います

最初に、Anaconda Promptを開いて、環境をTensorFlow用のやつに変えておきます(前回の記事で書いたやつです)

1
2
3
4
5
#Change env

(C:\utils\Anaconda3) D:\dev\anaconda>activate tensorflow

(tensorflow) D:\dev\anaconda>

(以下、失敗手順も含んでいます)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Installed TensorFlow (1st time, error occurred.)

(tensorflow) D:\dev\anaconda>pip install --upgrade tensorflow-gpu
Collecting tensorflow-gpu
  Downloading tensorflow_gpu-1.0.1-cp35-cp35m-win_amd64.whl (43.1MB)

(中略)

Successfully installed appdirs-1.4.3 numpy-1.12.1 packaging-16.8 protobuf-3.2.0 pyparsing-2.2.0 setuptools-34.3.3 six-1.10.0 tensorflow-gpu-1.0.1

(中略)

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\utils\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\setuptools-27.2.0-py3.5.egg'

(tensorflow) D:\dev\anaconda>

Tensorflowのインストールは出来ましたが、一番最後、なにやらファイルが無いとエラーが出ています
よくわからない( ̄▽ ̄)

cudnn64_5.dllが無い って言われる

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Check import version

(tensorflow) D:\dev\anaconda>python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:126] Couldn't open CUDA library cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3517] Unable to load cuDNN DSO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library curand64_80.dll locally
>>> print( tensorflow.__version__)
1.0.1
>>> exit()

(tensorflow) D:\dev\anaconda>

あれ?
ちゃんとCUDA8.0 に対応した cuDNN6.0 を入れたのに…(´・ω・`)

良く見てみると、わたしの落としてきた cuDNN の DLL は cudnn64_6.dll
エラーが出てるDLLは cudnn64_5.dll

…もうGetできなくね???(;^_^A


調べてもよく判らなかったので
持ってるDLLのファイル名を変更して使うことにしました(*ノωノ)
なんか今後問題でそうですが、致し方なし…
誰か、解決策あるなら教えて下さい(T▽T)

2017/4/17追記:
scimprさんに教えて頂きました
cuDNN5.1を選ぶと、cudnn64_5.dll が入っていますので、ここに書いたコピー暫定対応はしてはいけません!
cuDNN5.1でも問題なく TensorFlow 1.1.0rc1 は動いています!!


TensorFlowのバージョンは 1.0.1、インストールしまして、インポートでのエラーは出なくなりましたが…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
(tensorflow) D:\dev\anaconda>python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library curand64_80.dll locally
>>> print( tensorflow.__version__)
1.0.1
>>> exit()

(tensorflow) D:\dev\anaconda>

実はこの後、Hello TensorFlow! を表示しようとして、別の OpKernel エラーが大量発生します

E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel (‘op: “BestSplits” device_type: “CPU”‘) for unknown op: BestSplits

なんだよこれは…(。-`ω-)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Remained the same error too. (OpKernel error)

(tensorflow) D:\dev\anaconda>python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:135] successfully opened CUDA library curand64_80.dll locally
>>> hello = tf.constant('Hello tensorflow!')
>>> sess = tf.Session()
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: GeForce GTX 960
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:05:00.0
Total memory: 2.00GiB
Free memory: 1.64GiB
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:05:00.0)
>>> print(sess.run(hello))
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "BestSplits" device_type: "CPU"') for unknown op: BestSplits
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "CountExtremelyRandomStats" device_type: "CPU"') for unknown op: CountExtremelyRandomStats
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "FinishedNodes" device_type: "CPU"') for unknown op: FinishedNodes
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "GrowTree" device_type: "CPU"') for unknown op: GrowTree
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "ReinterpretStringToFloat" device_type: "CPU"') for unknown op: ReinterpretStringToFloat
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "SampleInputs" device_type: "CPU"') for unknown op: SampleInputs
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "ScatterAddNdim" device_type: "CPU"') for unknown op: ScatterAddNdim
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "TopNInsert" device_type: "CPU"') for unknown op: TopNInsert
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "TopNRemove" device_type: "CPU"') for unknown op: TopNRemove
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "TreePredictions" device_type: "CPU"') for unknown op: TreePredictions
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\framework\op_kernel.cc:943] OpKernel ('op: "UpdateFertileSlots" device_type: "CPU"') for unknown op: UpdateFertileSlots
b'Hello tensorflow!'
>>> exit()

ここでようやく、インストールが上手く行ってないことに気が付きます(+o+)


よし、気を取り直して
公式サイトではなく、GitHubの方に書かれている、インストール方法 を参考にしてみます

# Uninstalled TensorFlow

(tensorflow) D:\dev\anaconda>pip uninstall tensorflow-gpu
Uninstalling tensorflow-gpu-1.0.1:
  c:\utils\anaconda3\envs\tensorflow\lib\site-packages\external\d3\d3.js
  c:\utils\anaconda3\envs\tensorflow\lib\site-packages\external\d3\d3.min.js
  
(中略)

  c:\utils\anaconda3\envs\tensorflow\scripts\tensorboard.exe
Proceed (y/n)? y
  Successfully uninstalled tensorflow-gpu-1.0.1

※2017/4/10現在の情報です、正確には公式GitHubサイトを確認してください
> pip install –ignore-installed –upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0rc1-cp35-cp35m-win_amd64.whl

# Re-install TensorFlow for Anaconda, it's best way for Anaconda/Windows user!

(tensorflow) D:\dev\anaconda>pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0rc1-cp35-cp35m-win_amd64.whl
Collecting tensorflow-gpu==1.1.0rc1 from https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0rc1-cp35-cp35m-win_amd64.whl
  Downloading https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0rc1-cp35-cp35m-win_amd64.whl (48.6MB)
    100% |################################| 48.6MB 26kB/s
Collecting werkzeug>=0.11.10 (from tensorflow-gpu==1.1.0rc1)
  Downloading Werkzeug-0.12.1-py2.py3-none-any.whl (312kB)
    100% |################################| 317kB 3.0MB/s
Collecting numpy>=1.11.0 (from tensorflow-gpu==1.1.0rc1)
  Using cached numpy-1.12.1-cp35-none-win_amd64.whl
Collecting protobuf>=3.2.0 (from tensorflow-gpu==1.1.0rc1)
  Using cached protobuf-3.2.0-py2.py3-none-any.whl
Collecting six>=1.10.0 (from tensorflow-gpu==1.1.0rc1)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting wheel>=0.26 (from tensorflow-gpu==1.1.0rc1)
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |################################| 71kB 4.0MB/s
Collecting setuptools (from protobuf>=3.2.0->tensorflow-gpu==1.1.0rc1)
  Using cached setuptools-34.3.3-py2.py3-none-any.whl
Collecting packaging>=16.8 (from setuptools->protobuf>=3.2.0->tensorflow-gpu==1.1.0rc1)
  Using cached packaging-16.8-py2.py3-none-any.whl
Collecting appdirs>=1.4.0 (from setuptools->protobuf>=3.2.0->tensorflow-gpu==1.1.0rc1)
  Using cached appdirs-1.4.3-py2.py3-none-any.whl
Collecting pyparsing (from packaging>=16.8->setuptools->protobuf>=3.2.0->tensorflow-gpu==1.1.0rc1)
  Using cached pyparsing-2.2.0-py2.py3-none-any.whl
Installing collected packages: werkzeug, numpy, six, pyparsing, packaging, appdirs, setuptools, protobuf, wheel, tensorflow-gpu
Successfully installed appdirs-1.4.3 numpy-1.12.1 packaging-16.8 protobuf-3.2.0 pyparsing-2.2.0 setuptools-34.3.3 six-1.10.0 tensorflow-gpu-1.1.0rc1 werkzeug-0.12.1 wheel-0.29.0

TensorFlowのバージョンは 1.1.0rc1 になりました
(2017/4/10現在)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Hello TensorFlow!

(tensorflow) D:\dev\anaconda>python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello tensorflow')
>>> sess = tf.Session()
2017-04-07 17:55:06.792343: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:06.794854: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:06.795650: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:06.798303: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:06.798924: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:06.799553: W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-04-07 17:55:07.171447: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:887] Found device 0 with properties:
name: GeForce GTX 960
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:05:00.0
Total memory: 2.00GiB
Free memory: 1.64GiB
2017-04-07 17:55:07.171652: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:908] DMA: 0
2017-04-07 17:55:07.178823: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:918] 0:   Y
2017-04-07 17:55:07.180026: I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:05:00.0)
>>> print(sess.run(hello))
b'Hello tensorflow'
>>> exit()

これでOpKernelエラーは出なくなりましたし、GPU利用のログも出ていますね

name: GeForce GTX 960
major: 5 minor: 2 memoryClockRate (GHz) 1.253

ほっ…(≧▽≦)

(おまけ)SSEのワーニングを消すには?

しかし良く見て!?
エラーは消えたけど、ワーニングは出てるよっ!?!?

どうやらこれについては、本家GitHub issue でも取りざたされています

意味は、ソースからコンパイルし直したら、CPUが早くなるんじゃね?というお知らせの様です

うーん…GPUで動かしてるのにCPUを早くする??よくわからんです

これは放置でも動作に問題ないらしいのですが、見たくない場合は、ログレベルを変更したら見えなくなると、issueに記載がありました

import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL’]=‘2’

こんな感じですっきりしました
GPUの確認ログも消えちゃいますけど…

# Changed worning level

(tensorflow) D:\dev\anaconda>python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 21:28:42) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
>>> import tensorflow as tf
>>> hello = tf.constant('Hello tensorflow')
>>> sess = tf.Session()
>>> print(sess.run(hello))
b'Hello tensorflow'
>>> exit()

とりあえず、TensorFlow on Windows (GPU) のインストールと、最初の動作確認は完了しました

作業の全ログはこちらに置いています…

おつかれさまでした~

その他ポイント1:Anacondaではpipを使う

Anacondaでインストールする場合は、pipを使う(pip3 は無いみたい)

1
2
3
(tensorflow) D:\dev\anaconda>pip3
'pip3' is not recognized as an internal or external command,
operable program or batch file.

その他ポイント2:Pythonのバージョンは3.5

Tensorflowは Python3.5系じゃないとだめ
3.6に入れようとしたら、怒られました 試しに、CPU版にしても怒られました

1
2
3
4
(tensorflow) D:\dev\anaconda>pip install tensorflow-gpu
Collecting tensorflow-gpu
  Could not find a version that satisfies the requirement tensorflow-gpu (from versions: )
No matching distribution found for tensorflow-gpu

どうやら、pythonのバージョンは Windowsの場合3.5系でないと対応してないみたいです(2017/4/10現在)


(その他参考)

同じOpKernelエラー現象が出てる海外のも居た…
Installation log of Tensorflow 1.0 on Windows using pip
https://gist.github.com/apacha/a595c244f90a27aced56f67f7598d90d


[Anaconda] Anaconda for Windowsインストール方法

ちょっとPCのグラフィックボードを新しくしたので、TensorFlowでなんかモデルでも作ってみるかということで、Pythonを使うためにAnacondaをインストールしました

初回のインストールでは何も問題が起きなかったのですが、Anacondaのバージョンを上げようとして、なんか色々やってるうちに、エラーにはまったので、その解決メモです
(ただし、あまり良い解決方法じゃありません、ごめんなさい)

Anacondaのインストール

わたしの環境は以下です

このAnacondaはPython 3.6 に対応しています

Anaconda 4.3系は Pythonの 2.7, 3.4, 3.5, 3.6 をサポートしている様です

実は、わたしは何度もAncondaのインストールとアンインストールを繰り返しました
すると、再インストール時にはエラーメッセージ

Failed to create anaconda menus

がインストール時に出るようになってしまいました
インストールする権限の問題の様です
おかしいなぁ…
Administrator権限で起動してるのですが、出てしまいます…(´-`).。oO


これは、

この3点をすれば、怒られずにインストールできたのですが…

わたしのインストールしたいディレクトリは c:\utils\Anaconda3 なのです!

インストールしたいディレクトリを変更するって…ちょっとヤダなぁと思い
ダメもとで

にしてみたら、うまく同じインストールディレクトリに
再インストールすることが出来ました
あまり良い解決方法じゃないけど…もう権限周りで困りたくないです><。

あなこんだ for Windows 。。。難しいよ(´ω`)

インストーラーとWindowsの権限周りは、少し問題が残っている印象でした

TensorFlow用の開発環境を切る

今の状態でダイレクトに作業しても良いんですけど
他のプロジェクトや要件が出たときに困らないために、TensorFlow用の開発環境を切っておきます

(1)conda info -e コマンドで確認します

インストール直後の環境は root 環境しかありません

(C:\utils\Anaconda3) C:\Users\(インストールユーザ名)>conda info -e
# conda environments:
#
root                  *  C:\utils\Anaconda3

(2)conda create でAnacondaのTensorflow用環境を作ります

引数:

2017/3/29現在、公式では TensorFlowはPython 3.5系しかサポートしてないらしいです

公式の言う通り、3.5を指定することにします

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(C:\utils\Anaconda3) C:\Users\(インストールユーザ名)>conda create --name=tensorflow python=3.5
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment C:\utils\Anaconda3\envs\tensorflow:

The following NEW packages will be INSTALLED:

    pip:            9.0.1-py35_1
    python:         3.5.3-0
    setuptools:     27.2.0-py35_1
    vs2015_runtime: 14.0.25123-0
    wheel:          0.29.0-py35_0

Proceed ([y]/n)? y

python-3.5.3-0 100% |###############################| Time: 0:00:07   4.27 MB/s
setuptools-27. 100% |###############################| Time: 0:00:00   4.24 MB/s
wheel-0.29.0-p 100% |###############################| Time: 0:00:00   4.35 MB/s
pip-9.0.1-py35 100% |###############################| Time: 0:00:00   4.06 MB/s
#
# To activate this environment, use:
# > activate tensorflow
#
# To deactivate this environment, use:
# > deactivate tensorflow
#
# * for power-users using bash, you must source
#


(C:\utils\Anaconda3) C:\Users\(インストールユーザ名)>

(3)tensorflow という環境が出来ました

さっきの condaコマンドで確認します

(C:\utils\Anaconda3) C:\Users\(インストールユーザ名)>conda info -e
# conda environments:
#
tensorflow               C:\utils\Anaconda3\envs\tensorflow
root                  *  C:\utils\Anaconda3

(4)作った tensorflow環境に切り替えます

activateコマンドを使います
ちなみに抜けたい時は、deactivateです(が、わたしはあまり使う機会がないかな…)

1
2
3
(C:\utils\Anaconda3) C:\Users\(インストールユーザ名)>activate tensorflow

(tensorflow) C:\Users\(インストールユーザ名)>

前に、作った環境の名前 (tensorflow) が付くので、判りやすいですね!

(余談)起動ディレクトリを変更する

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)

わたしの場合、ここスタートアップの場所に Anaconda Prompt が入ってました

Anaconda Prompt のプロパティを開いて、開始するディレクトリを変更すればOKです

わたしは起動ディレクトリを、D:\dev\anaconda に変えました


ふー
たったこんだけなんですけどねぇ…(´-`).。oO
まごまごしてるわたし…

気を取り直して、次回は、TensorFlow on Windowsのインストール準備をします

<その他参考>


[Chrome] Google Chromeのマルチプロファイル設定

Google Chrome を使って、Webサイトの開発をしている人向けの情報です

自分のChromeのユーザプロファイラを使わずに、開発は別のプロファイラを使いたいってこと、ありますよね…?

[プランA] ユーザプロファイラを切り替える

Google Chrome のユーザデータを、開発用と自分個人用とに分けたい
開発用のモバイルモードで見てるときに、普通にPCブラウジングがしたい

とかいうときのために(か、どうか分かりませんが…)

Google chrome は複数ユーザに対応しています

  1. chrome://settings/ にアクセス
    もしくは、メニューの「設定」を押す

  2. 「ユーザ」の設定項目があるので、追加します

  3. アイコンと名前を選択して「追加」します
    (わたしの場合は適当に Development と付けました)

  4. ユーザ名が右上に表示されるようになり、新しい「Development」ユーザでブラウザが立ち上がります

Extension や閲覧履歴は、完全に今まで使っていたものとは別になっているので
新規プロファイルが使い放題です(*ノωノ)

これまで使っていたユーザは「ユーザ-1」
開発用のユーザは「Development」
で、使い分けることが可能になりました

[おまけ] 起動時に Development ユーザを指定して起動する方法

ちなみに、デフォルト起動はもちろん、これまで使っていた「ユーザー1」で立ち上がります

ショートカットなどで、さっき作ったDevelopmentユーザがいきなり立ち上がって欲しいときは
以下のように「profile-directory」起動オプションを設定してあげると
任意のユーザプロファイルで立ち上がります

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2"

※Chromeのショートカット設定にしておくと便利です

わたしの環境では、”Peofile 2”という名前でしたが、これは作った環境によって異なっているはずです

Chromeユーザプロファイルのデフォルトの位置はこちら↓↓↓

“C:\Users[Winユーザ名]\AppData\Local\Google\Chrome\User Data\Profile x”

ちなみに、これまで使っていた自分の環境である「ユーザー1」は「Default」というディレクトリ名です

“C:\Users[Winユーザ名]\AppData\Local\Google\Chrome\User Data\Default”


さて、プランAのプロファイル切り替えでも、まぁ用途は足りるんですけど
1点だけ、気に入らないところがありました…

確かに、完全にプロファイルは別になるのですが
起動時の画面サイズは、プロファイル間で共有されてしまうのです

これを解消したい…!
それが次に示すプランBのパターンです

[プランB] 稼働環境を別物にする

つまりプランAのままだと、

自分でブラウジングしてる「ユーザー1」の画面サイズと
「Development」ユーザの画面サイズを、
個別に保存することは出来ない

のです…
あぁ残念 xxx

でも大丈夫(*ノωノ)

方法がありました

プロファイルの保存場所そのものを、別のディレクトリにすればOKでした

指定するオプションは「user-data-dir」です

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="C:\utils\chrome_dev_profile"

※同じく、Chromeのショートカット設定の図、先ほどのプランAの profile-directory オプションは不要

このオプションで指定するディレクトリは、どこでもいいみたいですが
出来ればデフォルトで利用している

C:\Users[Winユーザ名]\AppData\Local\Google\Chrome\User Data

の配下は、避けた方がいいかもしれません
(わたしの環境では、スタートページがちょっと変になりました。深追いして調べてないです…)


プランA/Bのどちらでも、マルチプロファイラでブラウジングできるのですが
より独立した設定をしたい!という人には、プランBが私的にはお勧めです

Chrome は起動オプションがいっぱいあって、他にも
Userエージェントを指定出来たり(user-agent)、
ブラウザの言語を指定したり(lang=en-USで英語になる)と
いろんな機能が用意されてるので
開発用途としてはなかなかいい感じだなと、今更ながら思いました(*´∇`)ノ


<参考>

ちなみに、Google Chrome の起動オプションは
公式ではちょっと探しにくかったんですけど(わたしの探し方が悪いかも…)
こちらの人のサイトが、簡潔で一覧性が高く、参考になりました(^▽^)/

以下、日本語の参考サイト