파이썬에서 가중치를 유지하면서 두 개의 그물로 신경망 분할
Nov 17 2020
에서 keras
나는 훈련 과정에서 얻은 가중치로 주어진 훈련 된 신경망에 대한 구조의 초기 계층이있는 모델을 사용하고 싶습니다.
경우에가는 것은 우리가 데이터 집합을 상상할 수 있습니다 df
에 spliting 후 train
, dev
그리고 test
우리는이 예를를 들어, 신경망을 훈련 autoencoder
.
데이터를 제공하지 않고이 개념을 설명하는 실제 코드 (필요하다고 생각하지 않음) :
from keras.models import Model
from keras.layers import Activation, Dense, Dropout, Input
# Define input layer
input_data = Input(shape=(train.shape[1],), name='Input')
# Define encoding layer
encoded = Dense(encoding_dim, activation='relu')(input_data)
# Define decoding layer
decoded = Dense(train.shape[1], activation='sigmoid')(encoded)
# Create the autoencoder model
autoencoder = Model(input_data, decoded, name='Simple AutoEncoder')
#Compile the autoencoder model
autoencoder.compile(optimizer='rmsprop',
loss='binary_crossentropy')
autoencoder.fit(train, train,
epochs=50,
batch_size=256,
shuffle=True,
validation_data=(dev_x, dev_x), verbose=0)
후 compile
와 fit
모델은 우리가 피팅 프로세스에서 가져온 그들의 무게에 신경 네트워크를 가지고있다.
encoder part
내가 가진 무게를 보존하여 어떻게이 그물 만 사용할 수 있습니까?
답변
1 ibarrond Nov 17 2020 at 22:38
나는이 라인을 따라 무언가가 트릭을해야한다고 믿는다.
#...all the code from above, including training...
# Define the encoder model
encoder = Model(input_data, encoded, name='Encoder')
이 encoder
모델은 완전한 Keras 모델로 취급 될 수 있습니다 (저장 /로드 / 적합 / 평가 / 예측 가능).
PeCaDe Nov 18 2020 at 16:15
훈련 및으로써 Autoencoder
의 encoder
neuralnet 부분은 autoencoder의 훈련 된 가중치를 포함하는 인코딩 된 객체로 생성 될 것이다.
# Getting the trained weights of the first layer(dense layer of encoder)
weights_ae = autoencoder.layers[1].get_weights()[0]
# The previous code of the example...
# Creating the encoder model
encoder = Model(input_data, encoded, name='Encoder')
# Getting the weights of the encoder model
weights_e = encoder.layers[1].get_weights()[0]
따라서 마지막으로 모델을 생성하면 encoder
오토 인코더의 가중치 ( "훈련 된 경험")가 있음을 확인할 수 있습니다.