如何使用此模型在keras中安装阵列

2024-03-28 10:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

def kerasModel(inp_shape, activation, n):
    lstm_input = keras.layers.Input(shape=inp_shape, name='lstm_input')
    x = keras.layers.LSTM(50, name='lstm_0')(lstm_input)
    x = keras.layers.Dropout(0.2, name='lstm_dropout_0')(x)
    x = keras.layers.Dense(64, name='dense_0')(x)
    x = keras.layers.Activation('sigmoid', name='sigmoid_0')(x)
    x = keras.layers.Dense(n, name='dense_1')(x)

    output = keras.layers.Activation(activation, name='linear_output')(x)
    model = keras.Model(inputs=lstm_input, outputs=output)
    
    adam = keras.optimizers.Adam(lr=0.0005)
    model.compile(optimizer=adam, loss='mse')
    
    return model

modelGeneral = kerasModel((4, 1), 'linear', 1)
modelGeneral.fit(np.reshape(X_aux['X_i'], (1, 4, 1)), np.reshape(X_aux['X_i1'], (1, 4, 1)), verbose=False)

返回此错误:

>>> modelGeneral.fit(np.reshape(X_aux['X_i'], (1, 4, 1)), np.reshape(X_aux['X_i1'], (1, 1, 4)), verbose=False)
ValueError: Error when checking target: expected linear_output to have 2 dimensions, but got array with shape (1, 1, 4)
>>> modelGeneral.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_input (InputLayer)      (None, 4, 1)              0         
_________________________________________________________________
lstm_0 (LSTM)                (None, 50)                10400     
_________________________________________________________________
lstm_dropout_0 (Dropout)     (None, 50)                0         
_________________________________________________________________
dense_0 (Dense)              (None, 64)                3264      
_________________________________________________________________
sigmoid_0 (Activation)       (None, 64)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 1)                 65        
_________________________________________________________________
linear_output (Activation)   (None, 1)                 0         
=================================================================
Total params: 13,729
Trainable params: 13,729
Non-trainable params: 0
_________________________________________________________________

我试图在linear_output之前重新格式化数据,但它返回另一个错误:

>>> x = keras.layers.Reshape(inp_shape)(x)
ValueError: total size of new array must be unchanged

我想问题可能在{{}或{}中找到,但老实说,我迷路了,所以我希望能得到一些帮助

{}的一个例子:

array([[[ 1.5357086 , 3.84368446, 3.84368446, 232. ]]])