keras Timedistributed lstm+cnn

# 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]]
posted @ 2018-10-31 13:10  luoganttcc  阅读(378)  评论(0编辑  收藏  举报