示例#1
0
def interp_net():
    if gpu_num > 1:
        dev = "/cpu:0"
    else:
        dev = "/gpu:0"
    with tf.device(dev):
        main_input = Input(shape=(4*num_features, timestamp), name='input')
        sci = single_channel_interp(ref_points, hours_look_ahead)
        cci = cross_channel_interp()
        interp = cci(sci(main_input))
        reconst = cci(sci(main_input, reconstruction=True),
                      reconstruction=True)
        aux_output = Lambda(lambda x: x, name='aux_output')(reconst)
        z = Permute((2, 1))(interp)
        z = GRU(hid, activation='tanh', recurrent_dropout=0.2, dropout=0.2)(z)
        main_output = Dense(1, activation='sigmoid', name='main_output')(z)
        orig_model = Model([main_input], [main_output, aux_output])
    if gpu_num > 1:
        model = multi_gpu_model(orig_model, gpus=gpu_num)
    else:
        model = orig_model
    print(orig_model.summary())
    return model
示例#2
0
    m = m1 * m2
    ypred = ypred[:, :num_features, :]
    x = (y - ypred) * (y - ypred)
    x = x * m
    count = tf.reduce_sum(m, axis=2)
    count = tf.where(count > 0, count, tf.ones_like(count))
    x = tf.reduce_sum(x, axis=2) / count
    x = x / (wc**2)  # divide by std in case of multivariate time-series
    x = tf.reduce_sum(x, axis=1) / num_features
    return tf.reduce_mean(x)


# Interpolation-Prediction Model
main_input = Input(shape=(4 * num_features, timestamp), name='input')
sci = single_channel_interp(ref_points,
                            hours_look_ahead,
                            weights=[np.array([-3.0])])
interp = sci(main_input)
reconst = sci(main_input, reconstruction=True)
aux_output = Lambda(lambda x: x, name='aux_output')(reconst)
z = Permute((2, 1))(interp)
z = GRU(hid, activation='tanh')(z)
main_output = Dense(8, activation='softmax', name='main_output')(z)
model = Model([main_input], [main_output, aux_output])
model.compile(optimizer='adam',
              loss={
                  'main_output': 'categorical_crossentropy',
                  'aux_output': customloss
              },
              loss_weights={
                  'main_output': 1.,