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

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

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

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

Python 3.x

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

Q&A

0回答

209閲覧

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

blackmk

総合スコア23

Keras

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

Python 3.x

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

0グッド

0クリップ

投稿2019/04/15 01:36

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

python

1from keras.layers import Input, Dense 2from keras.models import Model 3import sklearn.model_selection 4import sklearn.datasets 5import numpy as np 6 7X = np.loadtxt('D:/X_data.csv' , delimiter = ",") 8Y = np.loadtxt('D:/Y_data.csv' , delimiter = ",") 9 10 11X_train , X_test , Y_train , Y_test = sklearn.model_selection.train_test_split(X ,Y , test_size = 0.3) 12 13X_train = X_train.astype('float32') / 255. 14X_test = X_test.astype('float32') / 255. 15X_train = X_train.reshape((len(X_train), np.prod(X_train.shape[1:]))) 16X_test = X_test.reshape((len(X_test), np.prod(X_test.shape[1:]))) 17 18 19 20encoding_dim = 10 21input_img = Input(shape=(45,)) 22 23encoded = Dense(128, activation='relu')(input_img) 24encoded = Dense(64, activation='relu')(encoded) 25encoded = Dense(32, activation='relu')(encoded) 26 27decoded = Dense(64, activation='relu')(encoded) 28decoded = Dense(128, activation='relu')(decoded) 29decoded = Dense(45, activation='sigmoid')(decoded) 30 31autoencoder = Model(input=input_img, output=decoded) 32autoencoder.compile(optimizer='adam', loss='binary_crossentropy') 33autoencoder.fit(X_train, X_train, 34 nb_epoch=100, 35 batch_size=16, 36 shuffle=True, 37 validation_data=(X_test, X_test))

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

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

python

1 2#Build the model 3 4import keras 5import numpy as np 6import sklearn.model_selection 7import sklearn.datasets 8 9#Load X,Y data 10 11X = np.loadtxt('D:/X_data.csv' , delimiter = ",") 12Y = np.loadtxt('D:/Y_data.csv' , delimiter = ",") 13 14X_train , X_test , Y_train , Y_test = sklearn.model_selection.train_test_split(X ,Y , test_size = 0.8) 15 16#NORMlIZE 17 18def normalizer(A): 19 M = np.reshape(A , (len(A) , -1)) 20 M = M.astype('float32') 21 max = M.max(axis = 0) 22 min = M.min(axis = 0) 23 return (M - min) / (max - min) 24 25X_train = normalizer(X_train) 26X_test = normalizer(X_test) 27 28Y_train_logit = keras.utils.to_categorical(Y_train) 29Y_test_logit = keras.utils.to_categorical(Y_test) 30 31#check the shape of X,Y 32print(X_train) 33print(Y_train) 34

python

1 2#model fitting 3 4import keras 5import tensorflow as tf 6from keras.models import Sequential 7from keras.layers import Dense , Activation 8 9#Model_Layers 10 11m = tf.keras.models.Sequential([ 12 13 tf.keras.layers.Dense(units=64, input_dim=len(X_train[0]), activation=tf.nn.relu), 14 tf.keras.layers.Dense(units=128, input_dim=len(X_train[0]), activation=tf.nn.relu), 15 tf.keras.layers.Dense(units=64, input_dim=len(X_train[0]), activation=tf.nn.relu), 16 17 tf.keras.layers.Dense(units=max(set(Y_train)) - min(set(Y_train)) + 1, activation=tf.nn.softmax) 18 19]) 20 21 22m.compile(loss='sparse_categorical_crossentropy', 23 optimizer='sgd', 24 metrics=['accuracy']) 25 26#fittng,epochs 27m.fit(X_train , Y_train ,epochs = 100) 28

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

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問