質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

457閲覧

複数のバイナリ変数を目的変数とするDNNの実装方法

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/01/11 02:10

複数の目的変数を同時に考えるDNNをKerasを用いて実装したいのですが、以下のように行うと途中でjupyterのカーネルが落ちてしまいます。
解決方法をご存知の方いましたら、方法を教えていただけないでしょうか。
入力データは数値データです。

import numpy as np from keras.layers import Dense,Activation from keras.models import Sequential model = Sequential() model.add(Dense(16, input_shape=(1,))) model.add(Activation('relu')) model.add(Dense(16, input_shape=(1,))) model.add(Activation('sigmoid')) # 全ての目的変数が0/1のためsigmoidを使う model.add(Dense(10)) # 目的変数が10列ある model.compile(loss='binary_crossentropy', optimizer='Adam') # ここで落ちる

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/01/11 03:00

このコード自体には問題はありません。OSはなにか,バックエンドはなにか、Python/Keras/バックエンドのバージョン、CPUかGPUかの情報を追記しましょう。GPUの場合、意図的にCPUを使う様に(GPUを使わない様に)設定して起動してみて、それで動くかは確認しましたか。
退会済みユーザー

退会済みユーザー

2019/01/18 02:48

返信おそくなり申し訳ありません、 OSのバージョン: macOS 10.12.6 Pythonのバージョン: 3.6.7 kerasのバージョン 2.2.4 tensorflow(CPU版)をバックエンドで使用(バージョン 1.12.0) になります。
退会済みユーザー

退会済みユーザー

2019/01/18 03:26

jupyter落ちたときにターミナルにメッセージ出ていたので、こちらに記載します。 2019-01-18 11:55:05.044935: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 8. Tune using inter_op_parallelism_threads for best performance. OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. OMP: Hint: This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
guest

回答1

0

回帰問題の場合、loss には binary_crossentropy ではなく mean_squared_error を指定するべきではないでしょうか

追記

XOR を学習するサンプル

python

1# -*- coding: utf-8 -*- 2import numpy as np 3from keras.layers.core import Dense 4from keras.models import Sequential 5 6X_train = np.array([[0, 0], [1, 0], [0, 1], [1, 1]], dtype=float) 7Y_train = np.array([0, 1, 1, 0], dtype=float) 8 9# モデルを作成する。 10model = Sequential() 11model.add(Dense(2, activation='sigmoid', input_shape=(2,))) 12model.add(Dense(1, activation='linear')) 13model.compile(loss='mean_squared_error', 14 optimizer='rmsprop', metrics=['accuracy']) 15 16# 学習する。 17history = model.fit(X_train, Y_train, batch_size=4, epochs=3000, verbose=0) 18 19# 推論する。 20Y_pred = model.predict(X_train) 21result = np.round(Y_pred) 22print(result) 23# [[0.] 24# [1.] 25# [1.] 26# [0.]]

投稿2019/01/11 02:36

編集2019/01/11 03:44
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/11 02:40

ご回答ありがとうございます。 入力変数は連続変数ですが、目的変数は0/1なので、mean_sqared_errorではないと思うのですが。
tiitoi

2019/01/11 03:16 編集

loss 引数は損失関数を定義するものであり、binary_crossentropy は、名前にバイナリと入っていますが、出力が 0, 1 になるものではありませんよ。 https://en.wikipedia.org/wiki/Binary_entropy_function 次に出力を 0 or 1 にするには、ある層の活性化関数を sigmoid 関数 (値域は [0, 1]) にして、 0 if x > 0.5 1 else とすると、出力を0, 1 にはできます。 しかし、この関数は微分可能でないため、学習できません。 なので、結論をいうと、出力を 0, 1 の2値にするのは無理です。
tiitoi

2019/01/11 03:20 編集

今回のケースでいうと、損失関数は mean_sqared_error、出力層の活性化関数は sigmoid にして学習して、推論で出てきた値を解釈する際に round() で丸めて 0, 1 にすればいいだけのきがしますがどうでしょうか?
tiitoi

2019/01/11 03:24

ちなみに質問欄のコード自体は Notebook 上で問題なく、実行できます。「ここで落ちる」と書かれている部分で特に落ちるような現象は確認できないので、これはまた別の問題ではないでしょうか。 コードの中身について言うと、入力層以外の中間層に , input_shape=(1,) が指定されているのは変です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問