オートエンコーダのコンテナが新しいKerasで削除されていることに注意してください。私の目的は、入力の符号化表現を抽出し、それを次の層、すなわち3つの隠れた層を使用する分類のための積み重ねられた自動符号化器への入力として供給することである。mnistを使用した分類のための積み重ねられたオートエンコーダ
例外:モデルターゲットをチェックしているときにエラーが発生しました:dense_160が形状(なし、500)を持つと予想されましたが、形状(60000L、784L)の配列があります。私はこのコードが私の意図を達成するかどうかはあまり確信していません。私はこれを解決する方法についてのガイドを感謝します。ありがとう。 以下のコードは貼り付けられます:
from keras.layers import Input, Dense
from keras.models import Model
from keras.datasets import mnist
import numpy as np
nb_classes = 10
nb_epoch=200
batch_size=256
hidden_layer1=784
hidden_layer2=600
hidden_layer3=500
(x_train, y_train), (x_test, y_test) = mnist.load_data()
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:])))
print('Train samples: {}'.format(x_train.shape[0]))
print('Test samples: {}'.format(x_test.shape[0]))
from keras.utils import np_utils
y_train = np_utils.to_categorical(y_train, nb_classes)
y_test = np_utils.to_categorical(y_test, nb_classes)
input_img = Input(shape=(784,))
encoded = Dense(hidden_layer1, activation='relu')(input_img)
encoded = Dense(hidden_layer2, activation='relu')(encoded)
encoded=Dense(hidden_layer3,activation='softmax')(encoded)
model = Model(input=input_img , output=encoded)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, x_train,
nb_epoch=nb_epoch,
batch_size=batch_size,
shuffle=True,
validation_data=(x_test, x_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test score before fine turning:', score[0])
print('Test accuracy after fine turning:', score[1])
@Tang Quoc Thai:答えはありません。あなたのスクリプトは、どの段階でもx_trainを出力としてネットワークを訓練していないので、これはいつでもオートエンコーダーとして機能しません。 – sahdeV