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

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

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

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

Python 3.x

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

受付中

オートエンコーダーで抽出したものを,新たな入力値としたい

blackmk
blackmk

総合スコア0

Keras

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

Python 3.x

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

0回答

0評価

0クリップ

5閲覧

投稿2019/04/15 01:36

現在,以下のようにオートエンコーダーで45→10の次元削減を行っております.

python

from keras.layers import Input, Dense from keras.models import Model import sklearn.model_selection import sklearn.datasets import numpy as np X = np.loadtxt('D:/X_data.csv' , delimiter = ",") Y = np.loadtxt('D:/Y_data.csv' , delimiter = ",") X_train , X_test , Y_train , Y_test = sklearn.model_selection.train_test_split(X ,Y , test_size = 0.3) X_train = X_train.astype('float32') / 255. X_test = X_test.astype('float32') / 255. X_train = X_train.reshape((len(X_train), np.prod(X_train.shape[1:]))) X_test = X_test.reshape((len(X_test), np.prod(X_test.shape[1:]))) encoding_dim = 10 input_img = Input(shape=(45,)) encoded = Dense(128, activation='relu')(input_img) encoded = Dense(64, activation='relu')(encoded) encoded = Dense(32, activation='relu')(encoded) decoded = Dense(64, activation='relu')(encoded) decoded = Dense(128, activation='relu')(decoded) decoded = Dense(45, activation='sigmoid')(decoded) autoencoder = Model(input=input_img, output=decoded) autoencoder.compile(optimizer='adam', loss='binary_crossentropy') autoencoder.fit(X_train, X_train, nb_epoch=100, batch_size=16, shuffle=True, validation_data=(X_test, X_test))

ここで得られた重みを用いて,特徴量を入力値にできるようなネットワークを構築したいです.

使用するネットワークは以下のようになります

python

#Build the model import keras import numpy as np import sklearn.model_selection import sklearn.datasets #Load X,Y data X = np.loadtxt('D:/X_data.csv' , delimiter = ",") Y = np.loadtxt('D:/Y_data.csv' , delimiter = ",") X_train , X_test , Y_train , Y_test = sklearn.model_selection.train_test_split(X ,Y , test_size = 0.8) #NORMlIZE def normalizer(A): M = np.reshape(A , (len(A) , -1)) M = M.astype('float32') max = M.max(axis = 0) min = M.min(axis = 0) return (M - min) / (max - min) X_train = normalizer(X_train) X_test = normalizer(X_test) Y_train_logit = keras.utils.to_categorical(Y_train) Y_test_logit = keras.utils.to_categorical(Y_test) #check the shape of X,Y print(X_train) print(Y_train)

python

#model fitting import keras import tensorflow as tf from keras.models import Sequential from keras.layers import Dense , Activation #Model_Layers m = tf.keras.models.Sequential([ tf.keras.layers.Dense(units=64, input_dim=len(X_train[0]), activation=tf.nn.relu), tf.keras.layers.Dense(units=128, input_dim=len(X_train[0]), activation=tf.nn.relu), tf.keras.layers.Dense(units=64, input_dim=len(X_train[0]), activation=tf.nn.relu), tf.keras.layers.Dense(units=max(set(Y_train)) - min(set(Y_train)) + 1, activation=tf.nn.softmax) ]) m.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) #fittng,epochs m.fit(X_train , Y_train ,epochs = 100)

下のコードの部分の学習では,層を深くすると過学習が起きてしまったので,オートエンコーダーで事前学習をしてから再度学習をさせようと考えた次第であります.
つまり,現在は45次元のデータで学習させていますが,オートエンコーダーで10次元まで特徴を圧縮して,それをもとに学習させたいと考えております.
どのように特徴量を読み込み,入力値とするのかを教えていただきたいです.よろしくお願いします.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Keras

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

Python 3.x

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