keras Timedistributed lstm+cnn

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luoganttcc/article/details/83582318
# univariate cnn-lstm example
from numpy import array
from keras.models import Sequential
from keras.layers import LSTM
from keras.models import Model
from keras.layers import Flatten
from keras.layers import TimeDistributed
from keras.layers.convolutional import Conv1D
from keras.layers.convolutional import MaxPooling1D
from keras.layers import Input, Add, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten,Conv2D, AveragePooling2D, MaxPooling2D, GlobalMaxPooling2D
# define dataset
X = array([[10, 20, 30, 40], [20, 30, 40, 50], [30, 40, 50, 60], [40, 50, 60, 70]])
y = array([50, 60, 70, 80])
# reshape from [samples, timesteps] into [samples, subsequences, timesteps, features]
X = X.reshape((X.shape[0], 2, 2, 1))
# define model

def cnn():
    input_shape = (2, 2, 1)
    X_input = Input(input_shape)
    
    X=TimeDistributed(Conv1D(filters=64, kernel_size=1, activation='relu'), input_shape=(2, 2, 1))(X_input)
    X=TimeDistributed(MaxPooling1D(pool_size=2))(X)
    X=TimeDistributed(Flatten())(X)
#    X = Dense(5, activation = 'softmax', name = 'fc' + str(5))(X)
    X=LSTM(50, activation='relu')(X)
    X=Dense(1)(X)
    
    model = Model(inputs = X_input, outputs = X, name = 'ResNet50')
    return model


model=cnn()
model.compile(optimizer='adam', loss='mse')
model.fit(X, y, epochs=500, verbose=0)
x_input = array([50, 60, 70, 80])
x_input = x_input.reshape((1, 2, 2, 1))
yhat = model.predict(x_input, verbose=0)
print(yhat)
[[ 93.35614777]]

猜你喜欢

转载自blog.csdn.net/luoganttcc/article/details/83582318