カテゴリーアーカイブ AI

著者:杉浦

機械学習によるクラスタリングの一手法であるk-means法

 k-means法は任意のデータをk種類のクラスタに分割する手法です。クラスタは集まりを意味する語でクラスやグループと同じようなものです。k-means法によってクラスタリングを行った際、グループは距離で分割されます。k-means法のアルゴリズムは次です。
1.ランダムにk個のクラスタ中心を振り分ける。
2.各データと各クラスタ中心の距離を求めて、データを最も中心の近いクラスタに振り分ける。
3.振り分け直されたデータによるクラスタ毎の中心を求める。
4.2,3を繰り返す。繰り返しをやめる時は変化がなくなるか、あらかじめ定めた閾値以下の微小な変化しかしなくなった時。
数式にすれば

x:各データ V:各クラスタ中心
です。具体的に画像で見てみると次です。
1.ランダムにk個のクラスタ中心を振り分けます。

2.各データと各クラスタ中心の距離を求めて、データを最も中心の近いクラスタに振り分ける。

3.振り分け直されたデータによるクラスタ毎の中心を求める。

2.各データと各クラスタ中心の距離を求めて、データを最も中心の近いクラスタに振り分ける。

3.振り分け直されたデータによるクラスタ毎の中心を求める。

2.各データと各クラスタ中心の距離を求めて、データを最も中心の近いクラスタに振り分ける。

3.振り分け直されたデータによるクラスタ毎の中心を求める。

4.繰り返しをやめる。
まとめて

 k-means法はクラスタに所属するデータとクラスタ中心の最大距離の近いk個のクラスタを自動生成する手法です。kは任意であり、k-mean法の使用者が任意に決定します。kを自動決定するように拡張されたx-means法という手法もあります。

  • この記事いいね! (0)
著者:杉浦

機械学習に用いる学習データの選定

 機械学習において学習、評価に用いられる学習データは出力結果の正しさ、出力までの計算時間に大きく関わります。学習データが小さすぎれば十分な正確さを持てず、大きすぎれば無用な計算時間が大量に増え、偏れば偏った結果しか出ません。
 学習データ数が増えるにつれて出力の正確さは増えます。増え方は対数に近く飽和が起きます。

 飽和している状態でさらに学習を行うのは時間の無駄です。正確さの増加量、飽和点は変数の数などのモデルの柔軟性によって大きく変わります。ディープラーニングの様な柔軟性が高いモデルを用いる場合、特に大量の学習データを用意する必要があります。近年はデータに対して自然にありえるであろう微細な加工を施すことで少ない学習データを大量の学習データをの様に扱う技術が生まれ始めています。
 機械学習の実行にかかる計算時間は学習データの数と項目数に大きく左右されます。計算量はデータ数と項目数の積になりがちです。これにより組み合わせ爆発同様の事態に陥ります。単純な繰り返しによる網羅はあっという間に破綻します。
 学習データの偏り方は学習データの母集団と目的の母集団のずれがバイアスとして現れます。通年の天気のデータを予測するために、夏の天気のデータのみを用いる様なものです。以前書いたアンケートのバイアスの話と同じです。

  • この記事いいね! (0)
著者:杉浦

機械学習の各手法やディープラーニングの共通部分

 この記事では機械学習の各種手法のアルゴリズムに共通する部分を述べます。この記事において、ディープラーニングは機械学習の一手法と扱います。アルゴリズムや処理の仕方という手法の面においてディープラーニングは機械学習の枠組みに収まっています。
 ディープラーニングの技術の成立の流れは、閾値判定、閾値判定のネットワークであるパーセプトロン、滑らかな閾値判定を行うロジスティック回帰、パーセプトロンとロジスティック回帰を合成したニューラルネットワーク、ニューラルネットワークを巨大で複雑にしたディープラーニング、というものに沿っています。これまで用いられてきた機械学習の手法がディープラーニングにつながってきているわけです。ディープラーニングが機械学習と別者の様に注目される理由はディープラーニングがこれまでの機械学習手法とは格別のパフォーマンスを持っているためです。ディープラーニングは性能面では今までの機械学習と別物扱いできますが、技術的な面では機械学習の一手法です。
 機械学習のアルゴリズムの概略図が下図です。

 それぞれのパーツの説明が次です。パーツ単位でまとめていますが、図中の観測データからの流れに沿って読むと気持ち少しわかりやすいはずです。

予測部 予測部はその名の通り観測されたデータから何かを予測する部分です。予測部のみで、入力された画像からその画像が何を表した画像か予測する、盤面から次の一手を予測する、身長から体重を予測する、といったことができます。任意の係数を定数として予測部のみを用いることによって、わずかな計算時間で値の予測ができます。
学習部 学習部はより良い評価値を出力できるように任意の係数を最適に近づけます。予測し、最適に近づけ、を繰り返すループを形成します。このループが学習に見立てられ余す。ループを重ねる程より最適化された任意の係数がわかります。ループを重ねる程より良い結果になる、多量にループを重ねたい、というのが機械学習において計算量が重要視される要因の一つです。

関数

カーネル関数 カーネル関数は観測データを使いやすく加工する関数です。この関数を通すことで計算量を削減したり、素の観測データそのものでは得にくいものを得たりします。
モデル関数 モデル関数は観測データと任意の係数を入力として、予測値と評価値の元になるパラメータを出力します。この関数は機械学習の手法によって中身が大きく変わります。
評価関数 評価関数はモデル関数の出力を入力として評価値を出力します。複数の項目にわたる予測値をまとめたり、値の正規化を行うことが多いです。
学習関数 学習関数は任意の係数と評価値を入力とする関数です。評価値と前状態の任意の係数を元により良い評価値を得られそうな方向に任意の係数を変化させます。

観測データ 観測データは主に実世界から得たデータです。画像識別でいえば入力画像、識別して欲しい画像達のことです。
予測値 予測値は観測データと任意の係数を入力としたモデル関数から出力される値です。画像識別では画像に付けられる銘になります。
任意の係数 任意の係数はモデル関数に与えられる値です。この任意の係数を最適化してより正確な予測をします。任意の係数の最適化を行う過程は人間の学習に似ています。
評価値 評価値は予測値が良い予測値なのか、悪い予測値なのかを評価した値です。任意の係数を変化させて、評価値を最大化ないし最小化しようとするアルゴリズムが機械学習です。

 いずれの機械学習も、モデルに沿った最高の評価を得る任意の係数を求める、という最適化問題を解こうとしています。機械学習は、何々から何々の最適な予測を行う、という言葉に落とし込める問題には全て挑めます。課題はどの様に入力、予測、評価を数値化するか、どの様なモデルを作成するか、どの様に入力データを得るか、です。また機械学習は応用できます。近年、注目されているディープラーニングを用いた自動画像生成アルゴリズムであるGANは、入力された画像からその画像が自動生成された画像であるか生の画像であるかの最適な予測を行う機械学習とノイズから生の画像に近づける変化の最適な予測を行う機械学習をつなげることで実現されます。

  • この記事いいね! (0)
村上 著者:村上

【アプリ】料理の写真を送るとカロリーや脂質などがわかる「カロミル」

先日、興味深いアプリを見つけたのでご紹介。
ライフログテクノロジー社が提供している「カロミル」という、食事や運動の記録・管理に対応したヘルスケアアプリです。

【カロミル】人工知能(AI)がダイエットと健康管理をサポート
https://calomeal.com/

読んだニュースによると、自社開発の食事画像解析AIを活用し、識別できる料理品目が約5200品目になったと発表されました。
これにより、食事を解析できる一般料理のカバー率が90%を超えたとのこと。
なお、今秋には、1万品目を達成する予定とのことでした。
ニュース記事についてはこちらから。

食事記録を手軽に–ダイエットアプリ「カロミル」、食事画像解析AIで5200品目を識別 – CNET Japan
https://japan.cnet.com/article/35122061/

 

実をいうと、平日は朝食を抜いてしまっているので、毎日の食事記録にはそこまで関心がないのですが、食べた料理がどのくらいのカロリーかがわかるというのは興味深いですね。
アプリ自体もインストールしてみましたが、LINEのアカウントでも、料理の画像を送ると料理名やカロリー、脂質などを認識してくれるというので、先に試してみました。

ちなみに送信したのは私が作ったカオマンガイ風のご飯です。
品目名は「海南チキンライス」なっていますが、鶏肉とご飯は識別できています。
カロリーは計算していないのでわかりません。

お手軽にどのくらいの精度かを知りたい場合は、LINEアカウントを友達追加するのがおすすめですね。
また、私のように毎日の食事の記録までは取らないけど、この料理はどのくらいのカロリーなのかを知りたいという場合には、LINEの機能を使うのが便利だと思います。

  • この記事いいね! (0)
著者:杉浦

色の表現、RGBとRGBA

 コンピュータが色を表す方式の中にはRGB、RGBAというものがあります。RGB表現はR(赤)、G(緑)、B(青)の三色の要素の強さで色を表しています。RGB全て取りうる範囲は[0,255]で、要は8bitで整数になる範囲です。RGBA表現はRGB表現にAlphaという要素を加えた色の表し方です。ほぼ全ての場合でAlphaは透明度として扱われます。A=[0,1]であり、非透明度の割合を示します。A=1(非透明度=100%)の場合、RGBA表現のRGB要素の値はRGB表現のRGB要素の値と全く同じになります。bitmapフォーマットは各ピクセルのRGBA値が延々と並んでいて、古い画像は8bit*4=32bit/pixelなデータが多いです。ハードの強化、高画質化に伴って64bit/pixelなデータも増えてます。
 RGBAによって表現される色は、自身の持つA要素である透明度、自身の持つRGB要素である描画色、重ねて塗られる対象のRGB要素である背景色、の計算から導かれます。計算はいたって単純な重みづけ平均で、次式の通りです。

(1 - A) * rgb_of_background + A * rgb_of_drawing = rgb_of_output
                A:透明度。RGBA表現のAlpha要素。スカラー。
rgb_of_background:背景色。RGB表現。3x1行列。
rgb_of_drawing   :描画色。RGBA表現のRGB要素。3x1行列。
rgb_of_output   :出力される色。RGB表現。3x1行列。

先ほど”A=1(非透明度=100%)の場合,RGBA表現のRGB要素の値はRGB表現のRGB要素の値と全く同じになります。”と述べました。A = 1ならば

rgb_of_drawing = rgb_of_output

あり出力される色は描画色と等しくなり、描画色のRGBの三要素のみで色を表しているわけです。
 透明度を使用することで背景色を考慮した色を出力することができます。これは例えばデザインに用いるような汎用的なライブラリで使われます。
 例えば、googleの公開しているマテリアルデザイン用ライブラリ、Material Design Liteでは
rgba(0,0,0,0.12)、rgba(158,158,158, 0.20)の様な、色の濃淡のみを変更するような使い方にrgbaを活用しています。

  • この記事いいね! (0)
著者:aoki

人工知能の父「アラン・チューリング」をもっと知りたい

最近AmazonPrimeで『イミテーション・ゲーム/エニグマと天才数学者の秘密』という映画を見ました。
最初はミステリー的な感覚でダウンロードしたのですが実際に見たら「アラン・チューリング」を題材にした映画でした。
エニグマとタイトルにある段階で気づけよ・・・

アラン・チューリング
アラン・マシスン・チューリング(Alan Mathieson Turing、英語発音: [tjúǝrɪŋ]〔テュァリング〕, OBE, FRS 1912年6月23日 – 1954年6月7日)はイギリスの数学者、論理学者、暗号解読者、コンピュータ科学者。
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%83%81%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0

エニグマ (暗号機)
エニグマ (Enigma) とは、第二次世界大戦のときにナチス・ドイツが用いていたことで有名なローター式暗号機のこと。幾つかの型がある。その暗号機の暗号も広義にはエニグマと呼ばれる。
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%8B%E3%82%B0%E3%83%9E_(%E6%9A%97%E5%8F%B7%E6%A9%9F)

ミステリーを見るつもりだったのでしたがアラン・チューリングの事でしたのでしっかり見る事にした結果、ITに従事している自分としては非常に興味深く見てよかったと思える映画でした。
かなり現実に忠実に作られており、どれだけチューリングが「bombe」(映画での名前はクリストファー)を作ることに苦労と時間を重ねて来たかが物凄くよくわかります。
今ではCPUやらGPUで高速演算できる時代ですが「bombe」が無ければ今言われている人工知能は無かったかもしれません。
是非ともITに従事している方は『イミテーション・ゲーム/エニグマと天才数学者の秘密』を見ることをお勧めします。

  • この記事いいね! (0)
著者:杉浦

ディープラーニングのできる多彩な表現

少し前の画像関係におけるディープラーニングの成果のニュースでは、数十万枚の画像データから学習を行った、というようなふれこみがありました。(最近は画像に上手く回転、移動などの変換をかけてデータの情報量を増やすことによって比較的少ない枚数による学習を行うことができるようになりました。数十万枚でも数千枚でもそれほど学習効率は変わらないはずです)
ディープラーニングにおいて、数十万枚のデータの学習による結果の精度は、数万枚のデータの学習にかかる時間よりも魅力的でした。この記事の話はディープラーニングがなぜそれだけ多くのデータから学び続けられるのか、という話になります。

ディープラーニングはビッグデータと呼ばれるExcelではとても扱いきれないぐらい巨大なデータを用いて学習することができます。これだけ膨大なデータを学習に活かすことができるディープラーニングは多彩な表現が可能になっています。ディープラーニングとは巨大なニューラルネットワークによる機械学習のことです。ニューラルネットワークの持つ表現の仕組みから、多彩な表現が可能な理由の一つを述べます。

ニューラルネットワークは下図の黒丸一つ一つで場合分けを行い、矢印先の黒丸一つ一つにその結果を伝え、伝えられた結果から場合分けが行われます。

この場合分けの伝達によって、場合分けの組み合わせ爆発ともいえるような状態を作れます。
例えば、8個の場合分けから成る層(上図の黒丸の縦列のこと)が14層並んでいるならば、場合分けを8^14回まで行えるようなものです。ここで行えるようなもの、というのは厳密には違うということと用いる意味の薄いであろう場合分けはあらかじめ無視し、処理しないということができるからということです。画像認識を例にすると、画像上における近隣の情報との関係が遠方の情報との関係よりも重要になるので、遠い画素との場合分けは省略したほうがお得です。

このように場合分けを多くすることで、この画素ならばこの線、この線ならばこの部品、この部品ならばこの物体という演繹を広く行うことができ、精度の高い結果を出力することができます。

  • この記事いいね! (0)
著者:杉浦

ディープラーニングの得意なこと、不得意なこと

この記事の結論は、ディープラーニングは、限られた情報空間内における予測、識別がとても得意であり、学習した情報に類似のない未知の情報に対する予測、識別が不得意、ということです。(y=xという式を予測したいとき、学習データがx=0からx=100までの範囲しかないならx=1000の場合の予測は無茶苦茶になりやすい、みたいな)
近年、ディープラーニングとして多数の層に組まれたニューラルネットワーク(以下NN)が注目されています。ディープラーニングという技術はNNの延長線上にあり、利点を伸ばし、欠点を小さくしながらもNNと同じ利点、欠点を引き継いでいます。
NNは確率的場合分けによる多値分類手法といえます。ここでいう分類とはaはカテゴリAに属する、bはカテゴリBに属する、…といったものです。確率的場合分けと確率的でない場合分けの違いを述べます。たとえば、AとBを場合分けするとします。確率的場合分けはAの確率70%、Bの確率30%と一度出力し、最も高い確率はAなのでAと分類します。確率的でない場合分けは確率を介さずにAと分類します。この場合分けを行う関数が活性化関数と呼ばれます。活性化関数にはステップ関数、シグモイド関数等の関数があります。
ステップ関数

0か1かのみの関数です。縦軸が0ならばA、1ならばBといった具合です。0%、100%という確率を表してるとも言えます。
シグモイド関数

0から1までを滑らかに表す関数です。縦軸が0.3ならばAの確率30%といった具合です。このシグモイド関数のような関数を用いることで確率的場合分けを行うことができます。関数の形からわかる様にこの関数単体で可能な分類は二値分類のみです。
多値分類とは分類結果の種類が3種類以上の場合の分類のことです。先ほど紹介した活性化関数を複数介することで複数種類の分類を行うことができます。下図の黒丸一つ一つが活性化関数です。左端の入力を上からx,y,zとします。活性化関数の出力である矢印はいずれも単一の出力である同じ値のことを示しています。活性化関数の一つであるシグモイド関数は出力:1/(1+exp(ax+by+cz))となるような関数です。このa、b、cはパラメータです。

ネットワークに学習をさせるということは、あるデータがこの関数らを介してどこに分類されるか、それが正しい分類かを試し、より正しく分類できる関数になるようにパラメータを変化させることです。上図では最終出力が二つあります。この最終出力は様々です。それぞれAである確率、Bである確率の様な単なる分類結果とすることもありますし、同じ入力から全く別の二種類の情報を得ようとすることもあります。
学習データに完璧に対応したネットワークが完成した場合、学習に用いたデータと同様のデータを入力した時には正しい分類を行うことができます。ディープなNNを構成するディープラーニングで用いるモデルは柔軟なモデルであり学習データに完璧に対応したネットワークが構成されやすいです。学習を行っていないデータが入力されたときはどうなるか。ネットワークは入力されたデータが学習に用いたデータに類似したデータの場合、正しい分類を行います。一方で学習に用いたデータと類似していないデータの場合、あてずっぽうともいえる的外れな分類を行いやすいです。このためディープラーニングは、学習したデータとその近辺の予測、識別が得意、学習した情報に類似のない未知の情報に対する予測、識別が不得意、ということになります。

余談:ディープラーニングが画像認識を得意とする理由の一因は画像の変化としてありえそうなパターンである拡縮回転、光源等による規則的な色調変化を広くカバーできるためです(学習データを拡縮回転、規則的な色調変化すればそれでありえそうな異なる画像を学習したのと同じことになる。ディープラーニングは学習データを増やしても学習データに対応できる柔軟性がモデルにある)。

  • この記事いいね! (0)
takahashi 著者:takahashi

知らないなんて勿体ない!!! 手軽にリアルなARを楽しめる Windows標準搭載のARアプリが面白い!

一時期なんとなーく鎮静化ムードだったAR(MR)周りですが、最近になってAppleがiOSで”AR Kit”というARライブラリを公開してから、Pockemon GOなどでリアルなARとして使われるようになるなど、にわかに活気がつき始めている印象があります。

そんな中、MicrosoftはWindows10発表と同時にMicrosoft Hololensなどを発表し、他の企業がなかなか進められなかったARに、かなり力を入れて来ていました。
現在もMicrosoftはWIndowsのAR機能に力を入れ続けているようで、一つ前のメジャーアップデート “Creators Update”で3Dオブジェクトの簡易作成機能を搭載した”3Dペイント”を搭載し、現在の”Fall Creators Update”ではさらにいろいろな3D関連の機能が追加されました。

今回はその中で簡単にリアルなARが楽しめるWindows 標準アプリ  “Mixed Realityビューア”を紹介したいと思います。

遊び方は超簡単。

まず起動すると上のような謎のアヒルのキャラクターが現れます。
ドラックしてぐりぐり動かすことで、3Dオブジェクトをいろんな角度から眺めることができます。

ここまでであればただの3Dビューア―アプリなのですが、面白いのはここから。

ウインドウ上部のメニューから”Mixed Reality”アイコンを選択します。

するとカメラが起動し、手が出てきてカメラに写っている平面をクリックするように促されるので、実際にクリックしてみます。

するとカメラで写っている平面に乗るような形で、先程のキャラクターが現れます!

すごいのは、カメラを動かすと、キャラクターもちゃんとその動きに追従して動く点。
マーカーもないのにここまで綺麗に追従してくれるのは、なかなか面白いです。

好みのアングルが決まったら、右側の白丸をクリックまたはタップすると、撮影もすることができます。

このキャラクターですが、デフォルト以外にもいろんなキャラクターやオブジェクトが用意されています。

飛行船や

建物。

恐竜や

なんとペガサスまで!!!
これらはすべて画面上部にある”Remix 3D”から入手できます。

これらのオブジェクトを使ってちょっと遊んでみました。

こちらは先ほどのデフォルトのアヒルのキャラクター。

腕に乗せられてますがなんだか不満そうです(笑

ふくろうのキャラクターをペン先に止まらせてみたり…

ペガサスを手に泊まらせてみたり!

極めつけは…

手乗りドラゴン!!!
ファンタジー好きなら一度はあこがれるシーンが、簡単に撮れちゃいます!!!

Remix 3Dですが、自分がつくったオブジェクトもアップロードができるようで、この仕組みが活性化していってオブジェクトの数が増えていったらもっと面白いことができそうな気がします!

残念なのは公式でこれらの機能の宣伝がまだあまりされていない点。

マイナーな機能になってしまうのは本当にもったいないぐらい面白い機能なので、興味を持った方は是非一度試してみてはいかがでしょうか…!

Windows Mixed Reality Viewer – Microsoftストア

 

  • この記事いいね! (0)
takahashi 著者:takahashi

UbuntuでTensorFlowを動かしてみる

以前からディープランニング型AIを実現するためのライブラリとして、TensorFlowというものがよく使われています。
ご存知の方も多いかと思います。

自分は今まであまり触れてこなかったのですが、知人がTensorFlowを使って簡易的な画像認識アプリを構築しているのをみて、自分も触れてみようと思い立ちました。

手元に自由に触れるUbuntuサーバーがあったので、こちらにTensorFlowが動作する環境を構築してみます。

まずはpipをインストールします。

sudo apt update
sudo apt install python-pip python-dev

インストール完了したらつぎにpipでTensorFlow(CPU版)を入手、インストールします。

#CPU版TensorFlowインストール
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

TensorFlowはCPU版とGPU版があり、GPU版を利用するとGPUを使って計算を行ってくれます。
ただし、GPU版はnVidia製GPUのみが対応している”CUDA”が必要になります。
GPU版を入手する場合は下記のコマンドを使用します。

#GPU版TensorFlowインストール
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

nVidia製以外のGPUを搭載していたり、ドライバが適切に設定されていない環境でGPU版を利用すると、エラーが発生して実行できません。

python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py", line 23, in <module>
    from tensorflow.python import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow import contrib
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/__init__.py", line 23, in <module>
    from tensorflow.contrib import layers
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/__init__.py", line 68, in <module>
    from tensorflow.contrib.layers.python.layers import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/__init__.py", line 22, in <module>
    from tensorflow.contrib.layers.python.layers.initializers import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/initializers.py", line 24, in <module>
    from tensorflow.python.ops import random_ops
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/random_ops.py", line 23, in <module>
    from tensorflow.python.framework import ops
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 39, in <module>
    from tensorflow.python.framework import versions
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/versions.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
    _pywrap_tensorflow = swig_import_helper()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: libcudart.so.7.5: cannot open shared object file: No such file or directory

インストールが完了したら、Pythonインタープリタに入ります。

python

すると、pythonの実行環境が起動し、
“>>>”
プロンプトが表示されるので、つづけて下記のように順に入力します。

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)

実行結果はこんな感じです。


>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
'Hello, TensorFlow!'
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)
42

ここまで動作すれば、TensorFlowは正常に動作しています。

Linux環境だと、大抵は初めからPythonが入っているので、セットアップ手順が少なくて済むのでありがたいのですが、Python自体を使用しているディストリビューションやアプリもあるようで、不用意にPythonのバージョンをアップグレードしてしまうと、OSやアプリが動作しなくなる危険もあるようです。

その場合はPyenvを利用してアプリごとにPythonのバージョンを切り替えることで対応できるようです。
pyenv + anaconda + python3 – Qiita

この辺りもまた試してみたいと思います。

参考サイト:
UbuntuにTensorFlowをインストール – Qiita
Ubuntu 16.04+CUDA 8.0+Tensorflow 環境で起きるlibcudartが見つからない問題を解決する – Qiita

  • この記事いいね! (0)