タグ

TensorFlowに関するstmsyのブックマーク (12)

  • GANs with Keras and TensorFlow - PyImageSearch

  • KerasでCNNしたった - Qiita

    Help us understand the problem. What is going on with this article?

    KerasでCNNしたった - Qiita
  • Deep LearningをKerasで可視化したい - GMOインターネットグループ グループ研究開発本部

    こんにちは。次世代システム研究室のJK (男)です。 突然ですが書籍の「ゼロから作るDeep Learning」読みましたか?基礎からクリアに説明されていて、個人的にはとても面白かったです。これまでLSTM, 強化学習の記事を書いてきましたが、今回はこのにならってDeep Learningの基礎の「ちょい深」理解を目指し、Deep Learningの可視化に焦点をあてたいと思います。 ちなみに今回の内容のcodeは、ここに上げておきました。 0. 可視化のモチベーション 最近のDeep Learningのフレームワークは充実していて、簡単に動かせるようになりましたね。でも動かせたけど理解した気がしない、って人も多いのではないでしょうか?その理由の一つが、Deep Learningがブラックボックス化していることだと思います。簡単に動かせることの副作用だと思いますが、インプットデータと教師

    Deep LearningをKerasで可視化したい - GMOインターネットグループ グループ研究開発本部
  • TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その3) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事では、「−」「|」「+」という記号をCNN(畳み込みニューラルネットワーク)で分類することに成功しました。これを、MNISTの手書き数字画像に適用するのが今回の記事です。 使用するネットワーク ここでは、2種類のネットワークを解説します。1つ目は、前回のネットワークを素直に拡張したものです。 前回の例では、2枚のフィルターと2個の特徴変数 で十分でしたが、ここではより複雑な図形を扱うためにフィルターを16枚に増やして、特徴変数も16個にしています。これで、約97%の正答率が達成できます。(トレーニングセットと分離した、テストセットに対する正答率です。) そして、Deep MNIST for Expertsの中では、さらに識別率を上げるために、次のようなネットワークを組んでいます。 ここまでくると、まさに「Deep

    TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その3) - めもめも
  • TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その2) - めもめも

    何の話かというと enakai00.hatenablog.com 前回の記事では、畳み込みのフィルターを固定的に手で与えて、後段の処理(特徴変数の抽出とSoftmax関数による分類)のみを機械学習で最適化するという例を紹介しました。次のステップは、畳み込みのフィルターそのものを機械学習で最適化するという処理になります。 そこで、まずは試しに、前回のコードに対して、フィルター部分も学習するように処理を書き換えてみます。 コードの書き換え なんと! TensorFlowを利用すると、これは、たった1行の修正でできてしまいます。フィルターのパラメーター W_conv1 を手で与えた定数(constant)から、学習対象の変数(Variable)に変えるだけです。W_conv1 の初期値は乱数で与えられます。 変更前 with tf.name_scope('convolution'): W_con

    TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その2) - めもめも
  • TensorFlow Tutorialの数学的背景 − Deep MNIST for Experts(その1) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事では、与えられたデータをそのまま分類するのではなく、分類に適した「特徴」を抽出した後、その特徴を表す変数(特徴変数)に対して分類処理をほどこすという考え方を紹介しました。今回は、とくに「畳み込み演算」によって、画像の特徴を抽出する方法を解説します。これは、Deep MNIST for Experts で紹介されているCNN(畳み込みニューラルネットワーク)による画像認識の基礎となります。 畳み込み演算とは? (参考資料)コンボリューションを用いた画像の平滑化、鮮鋭化とエッジ検出 はじめに、畳み込み演算を簡単に説明しておきます。簡単な例として、画像処理ソフトウェアで、画像を「ぼかす」フィルターをかける場合を考えます。これは、画像の各ピクセルにおいて、その部分の色をその周りのピクセルの色とまぜて平均化した色に置き換えれ

  • TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その3再び) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事の内容に若干の無理があったので、あらためて書き直します。 復習 enakai00.hatenablog.com 上記の記事で見たように、次のように隠れユニットが2個あるニューラルネットワークを用いると、平面を2の直線で分割する形での分類が可能になりました。 たとえば、次のような結果が得られます。 しかしながら、このモデルの場合、平面を4分割することはできても、4つの領域を任意に○✕に分類することはできません。たとえば、次のような「格子型」の配置は、うまく分類できません。 これはなぜかというと、隠れ層の出力は、 という4種類の値をとりますが、これを受け取るOutput層は の一次関数の値で○✕を判定する必要があるためです。 平面に直線を一引いて、領域を2つに分けた場合、「右上とその他」というような分類はできても、

    TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その3再び) - めもめも
  • TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その2) - めもめも

    何の話かというと enakai00.hatenablog.com 上記の記事では、隠れUnitが2個という、世界で最もシンプルなニューラルネットワークを構成しました。 これをちょこっとだけ、拡張して遊んでみます。 隠れUnitを増やす それぞれの隠れUnitは平面を直線で分割するわけですので、隠れUnitを増やせば分割線がどんどん増やせます。 前回のコードでは、下記の部分で隠れUnitの個数を指定していたので、これを変えてためしてみます。ここでは、4個にしてみます。 hidden1_units = 4 はい。予想通り、境界線がより複雑になりました。隠れUnitの数をどんどん増やすことで、どれほど複雑な関数でも表現できてしまいます。 ちなみに、上図の左側では、確率0.5を境界にして○と✕の領域を単純に分割していますが、右側を見ると、○と✕が混在した領域では、きちんと中間的な確率になっているこ

    TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その2) - めもめも
  • TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その1) - めもめも

    何の話かというと まず、下記の記事では、2次元平面を直線(一次関数)で分類するという問題を解きました。 enakai00.hatenablog.com 続いて、下記の記事では、2次元平面を多次元空間に拡張することで、手書き文字の分類ができることを示しました。これは、TensorFlow Tutorialの最初に登場する「MNIST For ML Beginners」と同じ処理にあたります。 enakai00.hatenablog.com そして、TensorFlow Tutorialの下記の例では、次のステップとして、「一次関数をニューラルネットワークに置き換える」という拡張を行っています。 ・TensorFlow Mechanics 101 ここでは類似の拡張を2次元平面の分類問題に適用することで、ニューラルネットワークの質をわかりやすく解説していきます。 問題設定 冒頭の記事では、い

    TensorFlow Tutorialの数学的背景 − TensorFlow Mechanics 101(その1) - めもめも
  • TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その2) - めもめも

    enakai00.hatenablog.com 何の話かというと 上記の記事の続きです。 線形多項分類器 前回は、平面を2つの領域に分割しましたが、次のステップとして、3つ以上の領域に分類する方法を考えます。色々な方法が考えられますが、ここでは、前回同様に一次関数を用いて分類する方法を用います。たとえば、3つに分類する場合、前回の と同様の関数を3つ用意します。 そして、ある点 に対して、 〜 の中で値が最も大きくなるものでこの点の分類を決めます。たとえば、 が最大だった場合、この点は「グループ2」に属するという具合です。 これは、図形的には次のように理解できます。あえて言葉で説明するので、その様子を頭の中で想像してください。 まず、 平面に縦方向の軸を追加して、関数 の値をグラフに描くと、 平面に対して、傾いた板が配置される形になります。 平面と「傾いた板」が交わる直線が に対応します。

  • TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも

    何の話かというと TensorFlow Tutorialの最初に登場する「MNIST For ML Beginners」では、次の方針で手書き文字の分類器を作成しています。(今の段階では、下記が何を言ってるのか分からなくても大丈夫です。) ・28x28ピクセルの手書き文字画像を各ピクセルの濃度を並べた784次元ベクトルと見なす。 ・784次元ベクトル空間を10箇所に分類する線形の多項分類器を用意する。 ・多項分類器の出力値をsoftmax関数に入れて、784次元空間の各点について、「0」〜「9」のそれぞれの文字である確率を定義する。 ・上記の定義の下で、トレーニングセットが得られる確率を最大にするよう、線形多項分類器のパラメーターを調整する。 これが一体何を言ってるのか・・・ということを数学的に理解していただくことが目標です。今回は、下準備として、より単純化したデータで上記と同じ処理を実装

    TensorFlow Tutorialの数学的背景 − MNIST For ML Beginners(その1) - めもめも
  • 数学系向けDeepLearning/Tensorflow入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? DeepLearningは最近ブームであり,その有名なライブラリとしてTensorflowがあります. この記事ではDeepLearningの基的な部分を数式を使って書き下すこととTensorflowの使い方を紹介します. 今更っていう気もしますが…,そこは気にしないでおくことにします 主な対象はベクトル空間やテンソル積等をある程度知っているけれど,DeepLearningは知らない人です. なので表記も大学の数学でよく出てくるものしています. なおニューラルネットワークの積分表現には触れません. 三層パーセプトロン ニューラルネット

    数学系向けDeepLearning/Tensorflow入門 - Qiita
  • 1