- 69

- 0

Python:

```
#multivariate data preparation
#multivariate multiple input cnn example
from numpy import array
from numpy import hstack
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense
from tensorflow.python.keras.layers import Flatten
from tensorflow.python.keras.layers.convolutional import Conv1D
from tensorflow.python.keras.layers.convolutional import MaxPooling1D
#split a multivariate sequence into samples
def split_sequences(sequences, n_steps):
X, y = list(), list()
for i in range(len(sequences)):
# find the end of this pattern
end_ix = i + n_steps
# check if we are beyond the dataset
if end_ix > len(sequences):
break
# gather input and output parts of the pattern
seq_x, seq_y = sequences[i:end_ix, :-1], sequences[end_ix-1, -1]
X.append(seq_x)
y.append(seq_y)
return array(X), array(y)
#define input sequence
dataset_len = 100
is1 = array([i*10+10 for i in range(dataset_len)])
is2 = array([i*10+15 for i in range(dataset_len)])
out_seq = array([is1[i]+is2[i]
for i in range(len(is1))])
#convert to [rows, columns] structure
is1 = is1.reshape((len(is1), 1))
is2 = is2.reshape((len(is2), 1))
out_seq = out_seq.reshape((len(out_seq), 1))
#horizontally stack columns
dataset = hstack((is1, is2,
#is3,is4,is5,is6,is7,is8,is9,
out_seq))
#print('raw input data is : \n{}\n'.format(dataset[0:7]))
#choose a number of time steps
n_steps = 3
#convert into input/output
X, y = split_sequences(dataset, n_steps)
#print('given \n{} we want to predict {}\n'.format(X[0], y[0]))
#model input must have shape [samples, timesteps, features]
#the dataset knows the number of features, e.g. 2
n_features = X.shape[2]
#define model
model = Sequential()
conv1d = Conv1D(filters=64, kernel_size=2, activation='relu', input_shape=(n_steps, n_features))
model.add(conv1d)
mp1d = MaxPooling1D(pool_size=2)
model.add(mp1d)
fl = Flatten()
model.add(fl)
model.add(Dense(50, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(2, activation='relu'))
model.add(Dense(1))
#print('\nCompiling model\n')
model.compile(optimizer='adam', loss='mse')
#plot_model(model, to_file='multivariate_laos.png', show_shapes=True,)
#fit model
model.fit(X, y, epochs=1000, batch_size=None, verbose=0, shuffle=False, steps_per_epoch=None)
##demonstrate prediction
x_input = array([[80, 85], [90, 95], [100, 105]])
x_input = x_input.reshape((1, n_steps, n_features))
yhat = model.predict(x_input, verbose=0)
print(yhat)`
```