2 входных и 2 выходных автоэнкодера, вероятно, не обучаются должным образом - PullRequest
0 голосов
/ 11 июля 2019

Я обучил свой автоэнкодер на 100 эпох и размер партии = 32.

Когда я использую model.fit (), я не получаю напрямую общую точность и потери за эпоху, но вижу точность и потери для различных уровней в моей сети, таких как dens_1, dens_2, reshape_1 и т. Д. Поэтому я не уверен, что сеть действительно была обучена в течение 100 эпох.

Может кто-нибудь сказать мне, как я могу отслеживать общую точность / потерю сети за эпоху? Моя сеть сложна с 2 входами, 2 выходами и несколькими связанными слоями между ними.

def all_in_one_model(embeddedOutput,charMatrixList):
    embeddedInput = Input(shape=(1,400))
    #charInput = Input(shape=(40774,32,30))
    charInput = Input(shape=(32,30,1))
    p20 = Sequential()(charInput)
    p21 = Conv2D(32, (3, 3), strides=(1,1) , padding="same", activation="relu",input_shape=(32,30,1))(p20)
    print('p21 shape')
    print(p21.shape)
    #pp = Reshape((40774,32*32),name='reshape_1')(p21)
    pp = Reshape((32,960))(p21)
    p22 = LSTM(16, return_sequences=True,input_shape=(32,32))(pp)
    p23 = LSTM(16, return_sequences=True)(p22)
    p24 = Flatten()(p23)
    print('p24 shape')
    print(p24.shape)

    p10 = Sequential()(embeddedInput)
    p11 = LSTM(64, return_sequences=True, input_shape=(1,400))(p10) #Must be (400,1)
    p12 = LSTM(128, return_sequences=True)(p11)
    p13 = Flatten()(p12)
    print('p13 shape')
    print(p13.shape)

    x = Concatenate()([p13, p24])
    #print(x.shape)
    y = Dense(400,activation='relu',name = 'dense_1')(x)
    print('y shape')
    print(y.shape)
    pp = Reshape((1,400),name='reshape_2')(y)
    embOut = Dense(400,activation='relu',name = 'dense_2')(pp)
    print('Emb out shape')
    print(embOut.shape)
    #qq = Reshape((40774,960))(y)
    charMatOut = Dense(960,activation='relu',name = 'dense_3')(y)
    print('Char matrix output shape')
    print(charMatOut.shape)
    #charout = np.reshape(np.array(charMatOut),(32,30,1))
    charout = Reshape((32,30,1),name='reshape_3')(charMatOut)
    print('Reshaped Char matrix output shape')
    print(charout.shape)
    model = Model(inputs=[embeddedInput, charInput], outputs=[embOut, charout])
    model.summary()
    model.compile(loss='mean_squared_error', optimizer='adam',metrics=['accuracy'])
    plot_model(model, to_file = "model.png")
    return model


model = all_in_one_model(embeddedOutput,charMatrixList)
model.fit([npeo, npcm], [npeo, npcm], epochs=100, batch_size=32,verbose=1)

Эпоха 1/100 40774/40774 [====================================] - 188 с 5 мс / шаг - потеря: 0,0031 - плотность_2_ потерь: 8,3277e- 04 - reshape_3_loss: 0.0022 - dens_2_acc: 0.0020 - reshape_3_acc: 0.9976- ETA: 17:16 - потери: 0.0058 - dens_2_loss: 8.3114e-04 - reshape_3_loss: 0.0050 - плотность_2_acc: 0,0104 - reshape_3_acc: 0,99: 0,90: 0,90: 0,90: 0,90: 0,90: 0,90 : 0,0058 - плотность_2_потоков: 8.3613e-04 - reshape_3_loss: 0,0050 - плотность_2_акк: 0,0024 - перепрограммируемых_3_acc: 0,9948 992/40774 [......................... .....] - ETA: 5:28 - убыток: 0,0058 - плотность_2_ потерь: 8,3601e-04 - изменение формы_3_0: 0,0050 - плотность_2_acc: 0,0020 - reshape_3_acc: 0,9948 - расчетное время: 4:28 - потери: 0,0057 - плотность_2_ потери: 8,3579e -04 - reshape_3_loss: 0,0049 - dens_2_acc: 0,0027 - reshape_3_acc: 0,9948 - ETA: 4:16 - потери: 0,0057 - dens_2_loss: 8,3530e-04 - reshape_3_loss: 0,0048 - плотность_2_acc: 0,0024 - Reshape_3_49_ac: 0 потеря: 0,0056 - плотность_2_отхода: 8,3492e-04 - изменение формы_3_отхода: 0,0047 - плотность_2_акк .: 0,0023 - изменение формы_3_акк .: 0,9949 2688/40774

...