# Misc Parameters tf.flags.DEFINE_boolean("allow_soft_placement", True, "Allow device soft device placement") tf.flags.DEFINE_boolean("log_device_placement", False, "Log placement of ops on devices") FLAGS = tf.flags.FLAGS FLAGS._parse_flags() print("\nParameters:") for attr, value in sorted(FLAGS.__flags.items()): print("{}={}".format(attr.upper(), value)) print("") # Data preparation # Load data print('Loading data ...') s1, s2, score = data_helper.read_data_sets(FLAGS.data_file) print(s1.shape) score = np.asarray([[s] for s in score]) sample_num = len(score) train_end = int(sample_num * FLAGS.train_sample_percentage) # Split train/test set # TODO: This is very crude, should use cross-validation s1_train, s1_dev = s1[:train_end], s1[train_end:] s2_train, s2_dev = s2[:train_end], s2[train_end:] score_train, score_dev = score[:train_end], score[train_end:] print("Train/Dev split: {:d}/{:d}".format(len(score_train), len(score_dev))) # Training with tf.Graph().as_default():
return tf.Variable(initial,name='weights') def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial,name='biases') def conv2d(x, W): return tf.nn.conv2d(x, W, strides=[1,1,1,1],padding='SAME',name='conv') def max_pool_22(x): return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1,2,2,1], padding='SAME',name='pool') # 函数read_data_sets:输入文件名,返回训练集,测试集的两个句子,标签,和嵌入矩阵 # 其中,embedding_w大小为vocabulary_size × embedding_size s1_train ,s2_train ,label_train, s1_test, s2_test, label_test, embedding_w = \ data_helper.read_data_sets('MNIST_data') print "得到9840维的s1_image,s2_image, label" with tf.name_scope('inputs'): x1 = tf.placeholder(tf.int64, shape=[None, 30], name='x1_input') x2 = tf.placeholder(tf.int64, shape=[None, 30], name='x2_input') y_ = tf.placeholder(tf.float32, shape=[None, 1], name='y_input') s1_image = tf.nn.embedding_lookup(embedding_w, x1) s2_image = tf.nn.embedding_lookup(embedding_w, x2) x_image = tf.matmul(s1_image,s2_image, transpose_b=True) x_flat = tf.reshape(x_image, [-1, 30, 30, 1]) with tf.name_scope('conv_layer'): with tf.name_scope('weights'): W_conv1 = weight_variable([5, 5, 1, 2])
FLAGS = tf.flags.FLAGS FLAGS._parse_flags() print("\nParameters:") for attr, value in sorted(FLAGS.__flags.items()): print("{}={}".format(attr.upper(), value)) print("") # Data Preparation # ================================================== # Load data print("Loading training data...") s1, s2, label, seqlen1, seqlen2 = data_helper.read_data_sets(FLAGS.data_file) print "in RNN_train.py read_data_sets finish" #label = np.asarray([y] for y in label) #print "label.type is", type(label) sample_num = len(label) train_end = int(sample_num * FLAGS.train_sample_percentage) print "sample_num=",sample_num print "train_end=",train_end ## Split train/test set ## TO_DO : This is very crude, should use cross-validation s1_train, s1_dev = s1[:train_end], s1[train_end:] s2_train, s2_dev = s2[:train_end], s2[train_end:] y_train, y_dev = label[:train_end], label[train_end:]