Content-Length: 333064 | pFad | http://b.hatena.ne.jp/babydaemons/Keras/
Kerasで複数の情報を入力して、途中で結合する方法を紹介します。 この方法は、例えば以下のように画像とテキストを使って予測モデルを作る場合などに有効です。リンク先参考。 ImageDataGeneratorを使いつつ統合する方法は、記事「KerasのImageDataGeneratorを使いつつ複数Input統合モデル」を参照ください。 処理概要 以前、記事「【Keras入門(1)】単純なディープラーニングモデル定義」で紹介した以下の図の配列dataを2つに分解して統合するモデルにしてみます。 処理プログラム プログラム全体はGitHubを参照ください。 ※なぜか直接GitHubで見られずに、nbviewerなら参照できました。nbviewerにhttps://github.com/YoheiFukuhara/keras-for-beginner/blob/master/Keras09_
はじめに カブクで機械学習エンジニアをしている大串正矢です。今回は複数入力モデルの精度向上のためのTipsについて書きます。 背景 複数入力のモデルでは単一入力のモデルとは異なり、下記のような問題点があります。 – データによってロスに対する貢献度が異なり、ロスが下がりやすいデータを優先して学習してしまう。 – 学習の収束性はデータによって異なり、全体の最適化を目指すと個々のデータで過学習が発生してしまう。 1の問題を解決する方法として重み付きヘテロジニアスラーニング、2の問題を解決するためTask Wise Early Stoppingという手法が存在するので今回はその手法を紹介します。 注意点:両手法はマルチタスクラーニングに適用される手法のため、記事上ではタスクと表記しています。1入力を1タスクと置き換えて記述しています。 データ、前処理、モデル定義部分 データと前処理、モデル定義部
概要以下の記事でChainerを使った場合のLSTMを学習する手順を整理しましたが、本記事ではKerasを使った場合について同様に整理してみました。結論から言うと、単純にLSTMを使いたい、と言うニーズであればKerasの方がかなりお手軽でした。 kerasを使ってLSTMを使うまでの流れまずはtensorflowとkerasをインストールします。 pip install tensorflow pip install keras 次にkerasのLSTMに投げ込むデータセットを作成します。おそらくここが唯一分かりにくい部分ですので、絵を書いてみました。左側が元データ、右側がkerasのLSTMが必要とするデータの形式です。kerasのLSTMでは、左の列から右の列に向けてデータをLSTMに投入していき、一番右の列が出力として得られる仕様になっているようです(return_sequences
はじめに カブクで機械学習エンジニアをしている大串正矢です。今回は複数時系列データを1つの深層学習モデルで学習させる方法について書きます。 背景 複数時系列データは複数企業の株価の変動、各地域における気温変動、複数マシーンのログなど多岐に渡って観測できます。この時系列ごとにモデルを用意して管理するとなると学習、運用において多大なるコストがかかってしまいます。1つのモデルで複数の時系列を管理できれば運用が楽になるだけでなく、学習も1度で済むのでトライアンドエラーの工数も大幅に削減できます。 本記事ではそのために実現可能な2つの手法を紹介します。 Kerasで複数の時系列データを深層学習モデルで学習させる手法には2つあります。 複数入力型の深層学習モデル 個別入力型の深層学習モデルの組み合わせ 1の手法の利点はモデルがシンプルなので学習と予測が2の手法に比べ高速になります。 2の手法の利点は時
単変量の時系列はkerasでもよく見るのですが、株価や売上などを予測する時などには複数の要因が関わってきますので、今回は複数の時系列データを使って予測してみました。 ソースの紹介 コード 「MACHINE LEARNING MASTERY」で紹介されているコードを基本に、多変量対応にしました。 Time Series Prediction with LSTM Recurrent Neural Networks in Python with Keras jupyterで見れるコードの全貌はこちら https://github.com/tizuo/keras/blob/master/LSTM%20with%20multi%20variables.ipynb データ サンプルデータは以下から拝借しました。一番左のice_salesを予測します。 アイスクリームの売れ方 ice_sales yea
時系列データ解析の為にRNNを使ってみようと思い,簡単な実装をして,時系列データとして ほとんど,以下の真似ごとなのでいいねはそちらにお願いします. 深層学習ライブラリKerasでRNNを使ってsin波予測 LSTM で正弦波を予測する CHANGE LOG 2020/07/12 Sequenceの長さを25 → 50で再学習させた場合を追記 ライブラリをスタンドアロンKeras → Tensorflow.kerasに変更 ライブラリ from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Activation from tensorflow.keras.layers import LSTM from tensorflow.keras.optimizers impor
RNNのチュートリアルとして、LSTMによる時系列予測モデルをKerasにて実装しました。 多分これが必要最低限の実装だと思います。 備忘録として記録しておきます。 1. LSTMとは LSTMは再帰型ニューラルネットワークであるRNNのバリエーションの一つで、主に時系列予測などの連続的なデータの処理に利用されます。原理の詳しい解説はここではしません。というかできません。 原理の解説記事はググるといっぱい出てきますが、特に以下のリンク先が参考になりそうでした。 LSTMネットワークの概要 - Qiita LSTM (Long short-term memory) 概要 LSTMのネットワークそのものはKerasを使えば割とあっさり実現できてしまいます。初めてLSTMを実装するにあたっては、モデルそれ自体よりも時系列処理のためのデータ分割や前処理がポイントになるかと思います。その辺りについて
はじめに この記事は、前回の続編です。 導入部分は前回を参照いただければと思います。 前回はSimpleRNNを 今回は、LSTMを使ってモデルを作ります。 1)モデル構築 学習データの作成部分は前回と同じなので割愛します。 今回は、LSTMクラスを使うので、モデル構築部分は下記のようになります。 (SimpleRNNがLSTMになっただけ) model = Sequential() model.add(InputLayer(batch_input_shape=(None, maxlen, in_out_dims))) model.add( LSTM(units=hidden_dims, return_sequences=False)) model.add(Dense(in_out_dims)) model.add(Activation("linear")) model.compile(l
はじめに この内容は、自身の知識の整理が主な目的です。 実装した内容は、公式ドキュメントや色々な人の実装例を参考にしていますが、 なにぶん、知識不足により間違った理解があるかもしれません。。 その時は、遠慮なくご指摘頂けると幸いです。。 環境: python 2.7.13 Keras 2.0.7 theano 0.9.0 scikit-learn 0.18.2 やること RNNのシンプルな例を使って、Kerasでの実装方法を学ぶ。 Kerasでの簡単なRNNの実装例はCNNと比べて少なかったので、(ここくらい?) 自分で例を作ってみようと思いました。 やることは、Peter's notesの例とほとんど同じですが、 可変長の数字の並びを入力として、その総和を出力とします。 例) no 入力(X) 出力(y)
も、長さ5の学習データとして意味のあるデータになります。大雑把に言えば、このような(先頭からある長さを取り出した)部分列も実質的に学習していることになる、と理解できそうです。 ここで面白いのは、LSTMレイヤーが元々持っている内部状態を制御するだけですので、LSTMレイヤーのモデルの複雑さ(パラメータ数)自体は変わらない点かと思います。学習データの件数やパラメータ数は増えていないのに、学習できる情報量が増えている?ような気がして、ちょっと戸惑ってしまいます。 プログラムで検証 同じ長さの列だけを学習データとして与えたときに、それより短い・長い列の総和をうまく予測できるかという課題にチャレンジします。 rnn_dynamic_before.py は、前回の記事の「可変長の系列を入力する場合 (1)」で取り上げた方法と同じで、ラベルには総和だけを与え、学習データを固定長に変えています。rnn_
Keras のステートレスLSTMとステートフルLSTMの勉強です。 ネット上の情報をかき集めて自分なりに実装しているので正確ではないところがある点はご了承ください。 追記:ステートフルLSTMと hidden state に関して記事を書きました。 Keras のステートフルLSTMと hidden state の関係を調査してみた 目次 KerasのステートレスLSTMとステートフルLSTMについて 実験に使うモデルセットの説明(アルファベット予測) 実験1:「1 文字 => 1 文字」マッピング 実験2:「3 文字特徴ウィンドウ => 1 文字」マッピング 実験3:「3 文字タイムステップ・ウィンドウ => 1 文字」マッピング 実験4:バッチサイズ 実験5:hidden state の保存と設定 コード全体 本記事で作成したコードは以下です。 ※1ファイル完結です。 ※Google
深層学習で時系列の予測がしたいときとかあると思います。 以下の記事を参考にさせていただきます。 qiita.com それで時系列データが手元にないので以下のサイトにある日経平均株価の日足をつかいます。 日経平均株価 1時間足 時系列データ CSVダウンロード 直近1000営業日の値動きをプロットすると以下です。縦軸は学習のためにスケーリング済みです。 以下のコードで学習します。参考記事のままです。前日まで10営業日分の株価を入力して当日の株価を予測するというモデルにします。900営業日分のデータで学習し、100営業日分のデータでテストすることにします。 # -*- coding: utf-8 -*- import numpy import pandas import matplotlib.pyplot as plt from sklearn import preprocessing fro
機械学習のタスクをこなすとき、損失関数を自分で定義したい事があります。そのような時、tensorflowには自分で定義した損失関数を使う機能があります。1 記事で使っているソースコードはgithub に置いてあります。 https://github.com/msamunetogetoge Custom Loss Function の説明 オリジナルの損失関数(custom loss function )は、実際の値(y_val)と、予測値(y_pred )を受け取って、tensor を返す関数として定義します。 def custom_loss(y_val, y_pred): """ 名前はなんでも良い loss= 何らからの計算 """ return loss 注意する事は、tensorflowの中での演算は、tensorflow 独自のtensor というオブジェクトで行われる事です。そ
import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns # Make NumPy printouts easier to read. np.set_printoptions(precision=3, suppress=True) 2022-08-09 01:44:03.878370: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered 2022-08-09 01:44:0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: http://b.hatena.ne.jp/babydaemons/Keras/
Alternative Proxies: