max_gamma_Avg_prec = 0 max_beta_Avg_prec = 0 APK = [] ASK = [] APK1 = [] ASK1 = [] min_one_err = 1000000 min_gamma_one_err = 0 min_beta_one_err = 0 max_S_2_train = 0 max_S_2_test = 0 with tf.Session(config=config) as sess: han = HAN(vocab_size=FLAGS.vocab_size, vocab_dict=vocab, A_matrix=A_matrix, num_classes=FLAGS.num_classes, num_classes_8=FLAGS.num_classes_8, sess=sess, embedding_size=FLAGS.embedding_size, hidden_size=FLAGS.hidden_size) regularizer = tf.contrib.layers.l2_regularizer(0.1) reg_term = tf.contrib.layers.apply_regularization(regularizer) loss = tf.reduce_mean( tf.nn.sigmoid_cross_entropy_with_logits( labels=han.input_y, logits=han.out)) + reg_term predict = tf.argmax(han.out, axis=1, name='predict') label = tf.argmax(han.input_y, axis=1, name='label') acc = tf.reduce_mean(tf.cast(tf.equal(predict, label), tf.float32)) global_step = tf.Variable(0, trainable=False)
FLAGS = tf.flags.FLAGS print(FLAGS.max_sent_in_doc) print(FLAGS.max_word_in_sent) train_x, train_y, dev_x, dev_y, vocab = load_dataset(FLAGS.yelp_json_path, FLAGS.labels_json_path, FLAGS.max_sent_in_doc, FLAGS.max_word_in_sent) print("data load finished") #print(train_x) with tf.Session() as sess: han = HAN(vocab_size=FLAGS.vocab_size, num_classes=FLAGS.num_classes, embedding_size=FLAGS.embedding_size, hidden_size=FLAGS.hidden_size) with tf.name_scope('loss'): loss = tf.reduce_mean( tf.nn.sigmoid_cross_entropy_with_logits(labels=han.input_y, logits=han.out, name='loss')) with tf.name_scope('accuracy'): predict = tf.argmax(han.out, axis=1, name='predict') label = tf.argmax(han.input_y, axis=1, name='label') acc = tf.reduce_mean(tf.cast(tf.equal(predict, label), tf.float32)) timestamp = str(int(time.time())) out_dir = os.path.abspath(os.path.join(os.path.curdir, "runs", timestamp)) print("Writing to {}\n".format(out_dir))
y_train = to_categorical(y_train) y_test = to_categorical(y_test) #add one extra dimention as the sentence (1 sentence per doc!) X_train = np.expand_dims(X_train, axis=1) X_test = np.expand_dims(X_test, axis=1) print('X_train shape:', X_train.shape) print('X_test shape:', X_test.shape) ##########----------字典的大小----- vocabulary_size = np.max([np.max(X_train[i]) for i in range(X_train.shape[0])])+1 print("vocab_size,--字典大小 ",vocabulary_size) nn = HAN( vocab_size=vocabulary_size, num_classes=y_train.shape[1], embedding_size=embedding_dim, hidden_size=rnn_size ) ########--------使用SGD梯度下降最小loss optimizer = tf.train.AdamOptimizer(learning_rate=1e-3).minimize(nn.loss) tf.summary.scalar('loss',nn.loss) tf.summary.scalar("accuracy",nn.accuracy) merged = tf.summary.merge_all() # Batch generators # batch_size = 256 # num_epochs = 3