/* * Copyright ©2019 Gaoang Wang. All rights reserved. Permission is * hereby granted for academic use. No other use, copying, distribution, or modification * is permitted without prior written consent. Copyrights for * third-party components of this work must be honored. Instructors * interested in reusing these course materials should contact the * author. */ import tensorflow as tf def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) def conv2d(x, W): return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') def max_pool(x, s1, s2): return tf.nn.max_pool(x, ksize=[1, s1, s2, 1], strides=[1, s1, s2, 1], padding='SAME') def seq_nn(batch_X_x,batch_X_y,batch_X_w,batch_X_h,batch_X_a,batch_mask_1,batch_mask_2,batch_Y,max_length,feature_size,keep_prob): # conv5_x W_conv1_1_x = weight_variable([1, 5, 3, 62]) b_conv1_1_x = bias_variable([62]) h_concat1_1_x = tf.concat([batch_X_x, batch_mask_1], 3) h_conv1_1_x = tf.nn.relu(conv2d(h_concat1_1_x, W_conv1_1_x) + b_conv1_1_x) h_pool1_1_x = max_pool(h_conv1_1_x, 1, 2) mask_pool1_1 = max_pool(batch_mask_1, 1, 2) W_conv1_2_x = weight_variable([1, 5, 64, 126]) b_conv1_2_x = bias_variable([126]) h_concat1_2_x = tf.concat([h_pool1_1_x, mask_pool1_1], 3) h_conv1_2_x = tf.nn.relu(conv2d(h_concat1_2_x, W_conv1_2_x) + b_conv1_2_x) h_pool1_2_x = max_pool(h_conv1_2_x, 1, 2) mask_pool1_2 = max_pool(mask_pool1_1, 1, 2) W_conv1_3_x = weight_variable([1, 5, 128, 128]) b_conv1_3_x = bias_variable([128]) h_concat1_3_x = tf.concat([h_pool1_2_x, mask_pool1_2], 3) h_conv1_3_x = tf.nn.relu(conv2d(h_concat1_3_x, W_conv1_3_x) + b_conv1_3_x) h_pool1_3_x = max_pool(h_conv1_3_x, 1, 2) h_pool_flat1_x = tf.reshape(h_pool1_3_x, [-1, 1*8*128]) # conv5_y W_conv1_1_y = weight_variable([1, 5, 3, 62]) b_conv1_1_y = bias_variable([62]) h_concat1_1_y = tf.concat([batch_X_y, batch_mask_1], 3) h_conv1_1_y = tf.nn.relu(conv2d(h_concat1_1_y, W_conv1_1_y) + b_conv1_1_y) h_pool1_1_y = max_pool(h_conv1_1_y, 1, 2) W_conv1_2_y = weight_variable([1, 5, 64, 126]) b_conv1_2_y = bias_variable([126]) h_concat1_2_y = tf.concat([h_pool1_1_y, mask_pool1_1], 3) h_conv1_2_y = tf.nn.relu(conv2d(h_concat1_2_y, W_conv1_2_y) + b_conv1_2_y) h_pool1_2_y = max_pool(h_conv1_2_y, 1, 2) W_conv1_3_y = weight_variable([1, 5, 128, 128]) b_conv1_3_y = bias_variable([128]) h_concat1_3_y = tf.concat([h_pool1_2_y, mask_pool1_2], 3) h_conv1_3_y = tf.nn.relu(conv2d(h_concat1_3_y, W_conv1_3_y) + b_conv1_3_y) h_pool1_3_y = max_pool(h_conv1_3_y, 1, 2) h_pool_flat1_y = tf.reshape(h_pool1_3_y, [-1, 1*8*128]) # conv5_w W_conv1_1_w = weight_variable([1, 5, 3, 62]) b_conv1_1_w = bias_variable([62]) h_concat1_1_w = tf.concat([batch_X_w, batch_mask_1], 3) h_conv1_1_w = tf.nn.relu(conv2d(h_concat1_1_w, W_conv1_1_w) + b_conv1_1_w) h_pool1_1_w = max_pool(h_conv1_1_w, 1, 2) W_conv1_2_w = weight_variable([1, 5, 64, 126]) b_conv1_2_w = bias_variable([126]) h_concat1_2_w = tf.concat([h_pool1_1_w, mask_pool1_1], 3) h_conv1_2_w = tf.nn.relu(conv2d(h_concat1_2_w, W_conv1_2_w) + b_conv1_2_w) h_pool1_2_w = max_pool(h_conv1_2_w, 1, 2) W_conv1_3_w = weight_variable([1, 5, 128, 128]) b_conv1_3_w = bias_variable([128]) h_concat1_3_w = tf.concat([h_pool1_2_w, mask_pool1_2], 3) h_conv1_3_w = tf.nn.relu(conv2d(h_concat1_3_w, W_conv1_3_w) + b_conv1_3_w) h_pool1_3_w = max_pool(h_conv1_3_w, 1, 2) h_pool_flat1_w = tf.reshape(h_pool1_3_w, [-1, 1*8*128]) # conv5_h W_conv1_1_h = weight_variable([1, 5, 3, 62]) b_conv1_1_h = bias_variable([62]) h_concat1_1_h = tf.concat([batch_X_h, batch_mask_1], 3) h_conv1_1_h = tf.nn.relu(conv2d(h_concat1_1_h, W_conv1_1_h) + b_conv1_1_h) h_pool1_1_h = max_pool(h_conv1_1_h, 1, 2) W_conv1_2_h = weight_variable([1, 5, 64, 126]) b_conv1_2_h = bias_variable([126]) h_concat1_2_h = tf.concat([h_pool1_1_h, mask_pool1_1], 3) h_conv1_2_h = tf.nn.relu(conv2d(h_concat1_2_h, W_conv1_2_h) + b_conv1_2_h) h_pool1_2_h = max_pool(h_conv1_2_h, 1, 2) W_conv1_3_h = weight_variable([1, 5, 128, 128]) b_conv1_3_h = bias_variable([128]) h_concat1_3_h = tf.concat([h_pool1_2_h, mask_pool1_2], 3) h_conv1_3_h = tf.nn.relu(conv2d(h_concat1_3_h, W_conv1_3_h) + b_conv1_3_h) h_pool1_3_h = max_pool(h_conv1_3_h, 1, 2) h_pool_flat1_h = tf.reshape(h_pool1_3_h, [-1, 1*8*128]) # conv5_appear W_conv1_1_a = weight_variable([1, 5, 3, 62]) b_conv1_1_a = bias_variable([62]) h_concat1_1_a = tf.concat([batch_X_a, batch_mask_2], 3) h_conv1_1_a = tf.nn.relu(conv2d(h_concat1_1_a, W_conv1_1_a) + b_conv1_1_a) h_pool1_1_a = max_pool(h_conv1_1_a, 1, 2) mask_pool1_1_a = max_pool(batch_mask_2, 1, 2) W_conv1_2_a = weight_variable([1, 5, 64, 126]) b_conv1_2_a = bias_variable([126]) h_concat1_2_a = tf.concat([h_pool1_1_a, mask_pool1_1_a], 3) h_conv1_2_a = tf.nn.relu(conv2d(h_concat1_2_a, W_conv1_2_a) + b_conv1_2_a) h_pool1_2_a = max_pool(h_conv1_2_a, 1, 2) mask_pool1_2_a = max_pool(mask_pool1_1_a, 1, 2) W_conv1_3_a = weight_variable([1, 5, 128, 128]) b_conv1_3_a = bias_variable([128]) h_concat1_3_a = tf.concat([h_pool1_2_a, mask_pool1_2_a], 3) h_conv1_3_a = tf.nn.relu(conv2d(h_concat1_3_a, W_conv1_3_a) + b_conv1_3_a) h_pool1_3_a = max_pool(h_conv1_3_a, 1, 2) #h_pool1_3_a = max_pool(h_pool1_3_a, feature_size-4, 1) h_pool1_3_a = tf.reduce_mean(h_pool1_3_a, axis=1) h_pool_flat1_a = tf.reshape(h_pool1_3_a, [-1, 1*8*128]) # conv9_x W_conv2_1_x = weight_variable([1, 9, 3, 62]) b_conv2_1_x = bias_variable([62]) h_concat2_1_x = tf.concat([batch_X_x, batch_mask_1], 3) h_conv2_1_x = tf.nn.relu(conv2d(h_concat2_1_x, W_conv2_1_x) + b_conv2_1_x) h_pool2_1_x = max_pool(h_conv2_1_x, 1, 2) mask_pool2_1 = max_pool(batch_mask_1, 1, 2) W_conv2_2_x = weight_variable([1, 9, 64, 126]) b_conv2_2_x = bias_variable([126]) h_concat2_2_x = tf.concat([h_pool2_1_x, mask_pool2_1], 3) h_conv2_2_x = tf.nn.relu(conv2d(h_concat2_2_x, W_conv2_2_x) + b_conv2_2_x) h_pool2_2_x = max_pool(h_conv2_2_x, 1, 2) mask_pool2_2 = max_pool(mask_pool2_1, 1, 2) W_conv2_3_x = weight_variable([1, 9, 128, 128]) b_conv2_3_x = bias_variable([128]) h_concat2_3_x = tf.concat([h_pool2_2_x, mask_pool2_2], 3) h_conv2_3_x = tf.nn.relu(conv2d(h_concat2_3_x, W_conv2_3_x) + b_conv2_3_x) h_pool2_3_x = max_pool(h_conv2_3_x, 1, 2) h_pool_flat2_x = tf.reshape(h_pool2_3_x, [-1, 1*8*128]) # conv9_y W_conv2_1_y = weight_variable([1, 9, 3, 62]) b_conv2_1_y = bias_variable([62]) h_concat2_1_y = tf.concat([batch_X_y, batch_mask_1], 3) h_conv2_1_y = tf.nn.relu(conv2d(h_concat2_1_y, W_conv2_1_y) + b_conv2_1_y) h_pool2_1_y = max_pool(h_conv2_1_y, 1, 2) W_conv2_2_y = weight_variable([1, 9, 64, 126]) b_conv2_2_y = bias_variable([126]) h_concat2_2_y = tf.concat([h_pool2_1_y, mask_pool2_1], 3) h_conv2_2_y = tf.nn.relu(conv2d(h_concat2_2_y, W_conv2_2_y) + b_conv2_2_y) h_pool2_2_y = max_pool(h_conv2_2_y, 1, 2) W_conv2_3_y = weight_variable([1, 9, 128, 128]) b_conv2_3_y = bias_variable([128]) h_concat2_3_y = tf.concat([h_pool2_2_y, mask_pool2_2], 3) h_conv2_3_y = tf.nn.relu(conv2d(h_concat2_3_y, W_conv2_3_y) + b_conv2_3_y) h_pool2_3_y = max_pool(h_conv2_3_y, 1, 2) h_pool_flat2_y = tf.reshape(h_pool2_3_y, [-1, 1*8*128]) # conv9_w W_conv2_1_w = weight_variable([1, 9, 3, 62]) b_conv2_1_w = bias_variable([62]) h_concat2_1_w = tf.concat([batch_X_w, batch_mask_1], 3) h_conv2_1_w = tf.nn.relu(conv2d(h_concat2_1_w, W_conv2_1_w) + b_conv2_1_w) h_pool2_1_w = max_pool(h_conv2_1_w, 1, 2) W_conv2_2_w = weight_variable([1, 9, 64, 126]) b_conv2_2_w = bias_variable([126]) h_concat2_2_w = tf.concat([h_pool2_1_w, mask_pool2_1], 3) h_conv2_2_w = tf.nn.relu(conv2d(h_concat2_2_w, W_conv2_2_w) + b_conv2_2_w) h_pool2_2_w = max_pool(h_conv2_2_w, 1, 2) W_conv2_3_w = weight_variable([1, 9, 128, 128]) b_conv2_3_w = bias_variable([128]) h_concat2_3_w = tf.concat([h_pool2_2_w, mask_pool2_2], 3) h_conv2_3_w = tf.nn.relu(conv2d(h_concat2_3_w, W_conv2_3_w) + b_conv2_3_w) h_pool2_3_w = max_pool(h_conv2_3_w, 1, 2) h_pool_flat2_w = tf.reshape(h_pool2_3_w, [-1, 1*8*128]) # conv9_h W_conv2_1_h = weight_variable([1, 9, 3, 62]) b_conv2_1_h = bias_variable([62]) h_concat2_1_h = tf.concat([batch_X_h, batch_mask_1], 3) h_conv2_1_h = tf.nn.relu(conv2d(h_concat2_1_h, W_conv2_1_h) + b_conv2_1_h) h_pool2_1_h = max_pool(h_conv2_1_h, 1, 2) W_conv2_2_h = weight_variable([1, 9, 64, 126]) b_conv2_2_h = bias_variable([126]) h_concat2_2_h = tf.concat([h_pool2_1_h, mask_pool2_1], 3) h_conv2_2_h = tf.nn.relu(conv2d(h_concat2_2_h, W_conv2_2_h) + b_conv2_2_h) h_pool2_2_h = max_pool(h_conv2_2_h, 1, 2) W_conv2_3_h = weight_variable([1, 9, 128, 128]) b_conv2_3_h = bias_variable([128]) h_concat2_3_h = tf.concat([h_pool2_2_h, mask_pool2_2], 3) h_conv2_3_h = tf.nn.relu(conv2d(h_concat2_3_h, W_conv2_3_h) + b_conv2_3_h) h_pool2_3_h = max_pool(h_conv2_3_h, 1, 2) h_pool_flat2_h = tf.reshape(h_pool2_3_h, [-1, 1*8*128]) # conv9_appear W_conv2_1_a = weight_variable([1, 9, 3, 62]) b_conv2_1_a = bias_variable([62]) h_concat2_1_a = tf.concat([batch_X_a, batch_mask_2], 3) h_conv2_1_a = tf.nn.relu(conv2d(h_concat2_1_a, W_conv2_1_a) + b_conv2_1_a) h_pool2_1_a = max_pool(h_conv2_1_a, 1, 2) mask_pool2_1_a = max_pool(batch_mask_2, 1, 2) W_conv2_2_a = weight_variable([1, 9, 64, 126]) b_conv2_2_a = bias_variable([126]) h_concat2_2_a = tf.concat([h_pool2_1_a, mask_pool2_1_a], 3) h_conv2_2_a = tf.nn.relu(conv2d(h_concat2_2_a, W_conv2_2_a) + b_conv2_2_a) h_pool2_2_a = max_pool(h_conv2_2_a, 1, 2) mask_pool2_2_a = max_pool(mask_pool2_1_a, 1, 2) W_conv2_3_a = weight_variable([1, 9, 128, 128]) b_conv2_3_a = bias_variable([128]) h_concat2_3_a = tf.concat([h_pool2_2_a, mask_pool2_2_a], 3) h_conv2_3_a = tf.nn.relu(conv2d(h_concat2_3_a, W_conv2_3_a) + b_conv2_3_a) h_pool2_3_a = max_pool(h_conv2_3_a, 1, 2) #h_pool2_3_a = max_pool(h_pool2_3_a, feature_size-4, 1) h_pool2_3_a = tf.reduce_mean(h_pool2_3_a, axis=1) h_pool_flat2_a = tf.reshape(h_pool2_3_a, [-1, 1*8*128]) # conv13_x W_conv3_1_x = weight_variable([1, 13, 3, 62]) b_conv3_1_x = bias_variable([62]) h_concat3_1_x = tf.concat([batch_X_x, batch_mask_1], 3) h_conv3_1_x = tf.nn.relu(conv2d(h_concat3_1_x, W_conv3_1_x) + b_conv3_1_x) h_pool3_1_x = max_pool(h_conv3_1_x, 1, 2) mask_pool3_1 = max_pool(batch_mask_1, 1, 2) W_conv3_2_x = weight_variable([1, 13, 64, 126]) b_conv3_2_x = bias_variable([126]) h_concat3_2_x = tf.concat([h_pool3_1_x, mask_pool3_1], 3) h_conv3_2_x = tf.nn.relu(conv2d(h_concat3_2_x, W_conv3_2_x) + b_conv3_2_x) h_pool3_2_x = max_pool(h_conv3_2_x, 1, 2) mask_pool3_2 = max_pool(mask_pool3_1, 1, 2) W_conv3_3_x = weight_variable([1, 13, 128, 128]) b_conv3_3_x = bias_variable([128]) h_concat3_3_x = tf.concat([h_pool3_2_x, mask_pool3_2], 3) h_conv3_3_x = tf.nn.relu(conv2d(h_concat3_3_x, W_conv3_3_x) + b_conv3_3_x) h_pool3_3_x = max_pool(h_conv3_3_x, 1, 2) h_pool_flat3_x = tf.reshape(h_pool3_3_x, [-1, 1*8*128]) # conv13_y W_conv3_1_y = weight_variable([1, 13, 3, 62]) b_conv3_1_y = bias_variable([62]) h_concat3_1_y = tf.concat([batch_X_y, batch_mask_1], 3) h_conv3_1_y = tf.nn.relu(conv2d(h_concat3_1_y, W_conv3_1_y) + b_conv3_1_y) h_pool3_1_y = max_pool(h_conv3_1_y, 1, 2) W_conv3_2_y = weight_variable([1, 13, 64, 126]) b_conv3_2_y = bias_variable([126]) h_concat3_2_y = tf.concat([h_pool3_1_y, mask_pool3_1], 3) h_conv3_2_y = tf.nn.relu(conv2d(h_concat3_2_y, W_conv3_2_y) + b_conv3_2_y) h_pool3_2_y = max_pool(h_conv3_2_y, 1, 2) W_conv3_3_y = weight_variable([1, 13, 128, 128]) b_conv3_3_y = bias_variable([128]) h_concat3_3_y = tf.concat([h_pool3_2_y, mask_pool3_2], 3) h_conv3_3_y = tf.nn.relu(conv2d(h_concat3_3_y, W_conv3_3_y) + b_conv3_3_y) h_pool3_3_y = max_pool(h_conv3_3_y, 1, 2) h_pool_flat3_y = tf.reshape(h_pool3_3_y, [-1, 1*8*128]) # conv13_w W_conv3_1_w = weight_variable([1, 13, 3, 62]) b_conv3_1_w = bias_variable([62]) h_concat3_1_w = tf.concat([batch_X_w, batch_mask_1], 3) h_conv3_1_w = tf.nn.relu(conv2d(h_concat3_1_w, W_conv3_1_w) + b_conv3_1_w) h_pool3_1_w = max_pool(h_conv3_1_w, 1, 2) W_conv3_2_w = weight_variable([1, 13, 64, 126]) b_conv3_2_w = bias_variable([126]) h_concat3_2_w = tf.concat([h_pool3_1_w, mask_pool3_1], 3) h_conv3_2_w = tf.nn.relu(conv2d(h_concat3_2_w, W_conv3_2_w) + b_conv3_2_w) h_pool3_2_w = max_pool(h_conv3_2_w, 1, 2) W_conv3_3_w = weight_variable([1, 13, 128, 128]) b_conv3_3_w = bias_variable([128]) h_concat3_3_w = tf.concat([h_pool3_2_w, mask_pool3_2], 3) h_conv3_3_w = tf.nn.relu(conv2d(h_concat3_3_w, W_conv3_3_w) + b_conv3_3_w) h_pool3_3_w = max_pool(h_conv3_3_w, 1, 2) h_pool_flat3_w = tf.reshape(h_pool3_3_w, [-1, 1*8*128]) # conv13_h W_conv3_1_h = weight_variable([1, 13, 3, 62]) b_conv3_1_h = bias_variable([62]) h_concat3_1_h = tf.concat([batch_X_h, batch_mask_1], 3) h_conv3_1_h = tf.nn.relu(conv2d(h_concat3_1_h, W_conv3_1_h) + b_conv3_1_h) h_pool3_1_h = max_pool(h_conv3_1_h, 1, 2) W_conv3_2_h = weight_variable([1, 13, 64, 126]) b_conv3_2_h = bias_variable([126]) h_concat3_2_h = tf.concat([h_pool3_1_h, mask_pool3_1], 3) h_conv3_2_h = tf.nn.relu(conv2d(h_concat3_2_h, W_conv3_2_h) + b_conv3_2_h) h_pool3_2_h = max_pool(h_conv3_2_h, 1, 2) W_conv3_3_h = weight_variable([1, 13, 128, 128]) b_conv3_3_h = bias_variable([128]) h_concat3_3_h = tf.concat([h_pool3_2_h, mask_pool3_2], 3) h_conv3_3_h = tf.nn.relu(conv2d(h_concat3_3_h, W_conv3_3_h) + b_conv3_3_h) h_pool3_3_h = max_pool(h_conv3_3_h, 1, 2) h_pool_flat3_h = tf.reshape(h_pool3_3_h, [-1, 1*8*128]) # conv13_appear W_conv3_1_a = weight_variable([1, 13, 3, 62]) b_conv3_1_a = bias_variable([62]) h_concat3_1_a = tf.concat([batch_X_a, batch_mask_2], 3) h_conv3_1_a = tf.nn.relu(conv2d(h_concat3_1_a, W_conv3_1_a) + b_conv3_1_a) h_pool3_1_a = max_pool(h_conv3_1_a, 1, 2) mask_pool3_1_a = max_pool(batch_mask_2, 1, 2) W_conv3_2_a = weight_variable([1, 13, 64, 126]) b_conv3_2_a = bias_variable([126]) h_concat3_2_a = tf.concat([h_pool3_1_a, mask_pool3_1_a], 3) h_conv3_2_a = tf.nn.relu(conv2d(h_concat3_2_a, W_conv3_2_a) + b_conv3_2_a) h_pool3_2_a = max_pool(h_conv3_2_a, 1, 2) mask_pool3_2_a = max_pool(mask_pool3_1_a, 1, 2) W_conv3_3_a = weight_variable([1, 13, 128, 128]) b_conv3_3_a = bias_variable([128]) h_concat3_3_a = tf.concat([h_pool3_2_a, mask_pool3_2_a], 3) h_conv3_3_a = tf.nn.relu(conv2d(h_concat3_3_a, W_conv3_3_a) + b_conv3_3_a) h_pool3_3_a = max_pool(h_conv3_3_a, 1, 2) #h_pool3_3_a = max_pool(h_pool3_3_a, feature_size-4, 1) h_pool3_3_a = tf.reduce_mean(h_pool3_3_a, axis=1) h_pool_flat3_a = tf.reshape(h_pool3_3_a, [-1, 1*8*128]) # conv3_x W_conv4_1_x = weight_variable([1, 13, 3, 62]) b_conv4_1_x = bias_variable([62]) h_concat4_1_x = tf.concat([batch_X_x, batch_mask_1], 3) h_conv4_1_x = tf.nn.relu(conv2d(h_concat4_1_x, W_conv4_1_x) + b_conv4_1_x) h_pool4_1_x = max_pool(h_conv4_1_x, 1, 2) mask_pool4_1 = max_pool(batch_mask_1, 1, 2) W_conv4_2_x = weight_variable([1, 13, 64, 126]) b_conv4_2_x = bias_variable([126]) h_concat4_2_x = tf.concat([h_pool4_1_x, mask_pool4_1], 3) h_conv4_2_x = tf.nn.relu(conv2d(h_concat4_2_x, W_conv4_2_x) + b_conv4_2_x) h_pool4_2_x = max_pool(h_conv4_2_x, 1, 2) mask_pool4_2 = max_pool(mask_pool4_1, 1, 2) W_conv4_3_x = weight_variable([1, 13, 128, 128]) b_conv4_3_x = bias_variable([128]) h_concat4_3_x = tf.concat([h_pool4_2_x, mask_pool4_2], 3) h_conv4_3_x = tf.nn.relu(conv2d(h_concat4_3_x, W_conv4_3_x) + b_conv4_3_x) h_pool4_3_x = max_pool(h_conv4_3_x, 1, 2) h_pool_flat4_x = tf.reshape(h_pool4_3_x, [-1, 1*8*128]) # conv3_y W_conv4_1_y = weight_variable([1, 13, 3, 62]) b_conv4_1_y = bias_variable([62]) h_concat4_1_y = tf.concat([batch_X_y, batch_mask_1], 3) h_conv4_1_y = tf.nn.relu(conv2d(h_concat4_1_y, W_conv4_1_y) + b_conv4_1_y) h_pool4_1_y = max_pool(h_conv4_1_y, 1, 2) W_conv4_2_y = weight_variable([1, 13, 64, 126]) b_conv4_2_y = bias_variable([126]) h_concat4_2_y = tf.concat([h_pool4_1_y, mask_pool4_1], 3) h_conv4_2_y = tf.nn.relu(conv2d(h_concat4_2_y, W_conv4_2_y) + b_conv4_2_y) h_pool4_2_y = max_pool(h_conv4_2_y, 1, 2) W_conv4_3_y = weight_variable([1, 13, 128, 128]) b_conv4_3_y = bias_variable([128]) h_concat4_3_y = tf.concat([h_pool4_2_y, mask_pool4_2], 3) h_conv4_3_y = tf.nn.relu(conv2d(h_concat4_3_y, W_conv4_3_y) + b_conv4_3_y) h_pool4_3_y = max_pool(h_conv4_3_y, 1, 2) h_pool_flat4_y = tf.reshape(h_pool4_3_y, [-1, 1*8*128]) # conv3_w W_conv4_1_w = weight_variable([1, 13, 3, 62]) b_conv4_1_w = bias_variable([62]) h_concat4_1_w = tf.concat([batch_X_w, batch_mask_1], 3) h_conv4_1_w = tf.nn.relu(conv2d(h_concat4_1_w, W_conv4_1_w) + b_conv4_1_w) h_pool4_1_w = max_pool(h_conv4_1_w, 1, 2) W_conv4_2_w = weight_variable([1, 13, 64, 126]) b_conv4_2_w = bias_variable([126]) h_concat4_2_w = tf.concat([h_pool4_1_w, mask_pool4_1], 3) h_conv4_2_w = tf.nn.relu(conv2d(h_concat4_2_w, W_conv4_2_w) + b_conv4_2_w) h_pool4_2_w = max_pool(h_conv4_2_w, 1, 2) W_conv4_3_w = weight_variable([1, 13, 128, 128]) b_conv4_3_w = bias_variable([128]) h_concat4_3_w = tf.concat([h_pool4_2_w, mask_pool4_2], 3) h_conv4_3_w = tf.nn.relu(conv2d(h_concat4_3_w, W_conv4_3_w) + b_conv4_3_w) h_pool4_3_w = max_pool(h_conv4_3_w, 1, 2) h_pool_flat4_w = tf.reshape(h_pool4_3_w, [-1, 1*8*128]) # conv13_h W_conv4_1_h = weight_variable([1, 13, 3, 62]) b_conv4_1_h = bias_variable([62]) h_concat4_1_h = tf.concat([batch_X_h, batch_mask_1], 3) h_conv4_1_h = tf.nn.relu(conv2d(h_concat4_1_h, W_conv4_1_h) + b_conv4_1_h) h_pool4_1_h = max_pool(h_conv4_1_h, 1, 2) W_conv4_2_h = weight_variable([1, 13, 64, 126]) b_conv4_2_h = bias_variable([126]) h_concat4_2_h = tf.concat([h_pool4_1_h, mask_pool4_1], 3) h_conv4_2_h = tf.nn.relu(conv2d(h_concat4_2_h, W_conv4_2_h) + b_conv4_2_h) h_pool4_2_h = max_pool(h_conv4_2_h, 1, 2) W_conv4_3_h = weight_variable([1, 13, 128, 128]) b_conv4_3_h = bias_variable([128]) h_concat4_3_h = tf.concat([h_pool4_2_h, mask_pool4_2], 3) h_conv4_3_h = tf.nn.relu(conv2d(h_concat4_3_h, W_conv4_3_h) + b_conv4_3_h) h_pool4_3_h = max_pool(h_conv4_3_h, 1, 2) h_pool_flat4_h = tf.reshape(h_pool4_3_h, [-1, 1*8*128]) # conv3_appear W_conv4_1_a = weight_variable([1, 13, 3, 62]) b_conv4_1_a = bias_variable([62]) h_concat4_1_a = tf.concat([batch_X_a, batch_mask_2], 3) h_conv4_1_a = tf.nn.relu(conv2d(h_concat4_1_a, W_conv4_1_a) + b_conv4_1_a) h_pool4_1_a = max_pool(h_conv4_1_a, 1, 2) mask_pool4_1_a = max_pool(batch_mask_2, 1, 2) W_conv4_2_a = weight_variable([1, 13, 64, 126]) b_conv4_2_a = bias_variable([126]) h_concat4_2_a = tf.concat([h_pool4_1_a, mask_pool4_1_a], 3) h_conv4_2_a = tf.nn.relu(conv2d(h_concat4_2_a, W_conv4_2_a) + b_conv4_2_a) h_pool4_2_a = max_pool(h_conv4_2_a, 1, 2) mask_pool4_2_a = max_pool(mask_pool4_1_a, 1, 2) W_conv4_3_a = weight_variable([1, 13, 128, 128]) b_conv4_3_a = bias_variable([128]) h_concat4_3_a = tf.concat([h_pool4_2_a, mask_pool4_2_a], 3) h_conv4_3_a = tf.nn.relu(conv2d(h_concat4_3_a, W_conv4_3_a) + b_conv4_3_a) h_pool4_3_a = max_pool(h_conv4_3_a, 1, 2) #h_pool4_3_a = max_pool(h_pool4_3_a, feature_size-4, 1) h_pool4_3_a = tf.reduce_mean(h_pool4_3_a, axis=1) h_pool_flat4_a = tf.reshape(h_pool4_3_a, [-1, 1*8*128]) # fc h_pool_flat = tf.concat([h_pool_flat1_x, h_pool_flat1_y, h_pool_flat1_w, h_pool_flat1_h, h_pool_flat1_a, h_pool_flat2_x, h_pool_flat2_y, h_pool_flat2_w, h_pool_flat2_h, h_pool_flat2_a, h_pool_flat3_x, h_pool_flat3_y, h_pool_flat3_w, h_pool_flat3_h, h_pool_flat3_a, h_pool_flat4_x, h_pool_flat4_y, h_pool_flat4_w, h_pool_flat4_h, h_pool_flat4_a], 1) W_fc1 = weight_variable([20 * 8 * 128, 1024]) b_fc1 = bias_variable([1024]) h_fc1 = tf.nn.relu(tf.matmul(h_pool_flat, W_fc1) + b_fc1) h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) W_fc2 = weight_variable([1024, 2]) b_fc2 = bias_variable([2]) y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2 return y_conv