From dc274bb1b11d2b5e8614f1407297a396745892aa Mon Sep 17 00:00:00 2001 From: Sun Ro Lee Date: Thu, 8 Dec 2016 13:52:20 +0900 Subject: [PATCH 1/2] resolve CUDA_LAUNCH_FAILED problem in tf-gpu-windows env. conv2d filters were divided into 64. --- .idea/cnn-text-classification-tf.iml | 12 + .idea/misc.xml | 14 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .idea/workspace.xml | 383 +++++++++++++++++++++++++++ data_helpers.py | 4 +- text_cnn.py | 44 +-- train.py | 4 +- 8 files changed, 451 insertions(+), 24 deletions(-) create mode 100644 .idea/cnn-text-classification-tf.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml diff --git a/.idea/cnn-text-classification-tf.iml b/.idea/cnn-text-classification-tf.iml new file mode 100644 index 000000000..6f63a63cc --- /dev/null +++ b/.idea/cnn-text-classification-tf.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..1fc562422 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..a01c66af1 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 000000000..bf4f3d8e7 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1481171616617 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/text_cnn.py + 32 + + + file://$PROJECT_DIR$/text_cnn.py + 36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data_helpers.py b/data_helpers.py index 8f7c48d1f..dbd50caff 100644 --- a/data_helpers.py +++ b/data_helpers.py @@ -31,9 +31,9 @@ def load_data_and_labels(positive_data_file, negative_data_file): Returns split sentences and labels. """ # Load data from files - positive_examples = list(open(positive_data_file, "r").readlines()) + positive_examples = list(open(positive_data_file, "r", encoding='utf-8').readlines()) positive_examples = [s.strip() for s in positive_examples] - negative_examples = list(open(negative_data_file, "r").readlines()) + negative_examples = list(open(negative_data_file, "r", encoding='utf-8').readlines()) negative_examples = [s.strip() for s in negative_examples] # Split by words x_text = positive_examples + negative_examples diff --git a/text_cnn.py b/text_cnn.py index 01fed1cce..60c7534dc 100644 --- a/text_cnn.py +++ b/text_cnn.py @@ -29,28 +29,32 @@ def __init__( # Create a convolution + maxpool layer for each filter size pooled_outputs = [] + split_filters = [64 for _ in range(int(num_filters/64))] + if num_filters % 64 > 0: + split_filters.append(int(num_filters % 64)) for i, filter_size in enumerate(filter_sizes): with tf.name_scope("conv-maxpool-%s" % filter_size): - # Convolution Layer - filter_shape = [filter_size, embedding_size, 1, num_filters] - W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W") - b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b") - conv = tf.nn.conv2d( - self.embedded_chars_expanded, - W, - strides=[1, 1, 1, 1], - padding="VALID", - name="conv") - # Apply nonlinearity - h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu") - # Maxpooling over the outputs - pooled = tf.nn.max_pool( - h, - ksize=[1, sequence_length - filter_size + 1, 1, 1], - strides=[1, 1, 1, 1], - padding='VALID', - name="pool") - pooled_outputs.append(pooled) + for num_filter in split_filters: + # Convolution Layer + filter_shape = [filter_size, embedding_size, 1, num_filter] + W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W") + b = tf.Variable(tf.constant(0.1, shape=[num_filter]), name="b") + conv = tf.nn.conv2d( + self.embedded_chars_expanded, + W, + strides=[1, 1, 1, 1], + padding="VALID", + name="conv") + # Apply nonlinearity + h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu") + # Maxpooling over the outputs + pooled = tf.nn.max_pool( + h, + ksize=[1, sequence_length - filter_size + 1, 1, 1], + strides=[1, 1, 1, 1], + padding='VALID', + name="pool") + pooled_outputs.append(pooled) # Combine all the pooled features num_filters_total = num_filters * len(filter_sizes) diff --git a/train.py b/train.py index af31a9eb8..2282a468e 100755 --- a/train.py +++ b/train.py @@ -18,9 +18,9 @@ tf.flags.DEFINE_string("negative_data_file", "./data/rt-polaritydata/rt-polarity.neg", "Data source for the positive data.") # Model Hyperparameters -tf.flags.DEFINE_integer("embedding_dim", 128, "Dimensionality of character embedding (default: 128)") +tf.flags.DEFINE_integer("embedding_dim", 256, "Dimensionality of character embedding (default: 128)") tf.flags.DEFINE_string("filter_sizes", "3,4,5", "Comma-separated filter sizes (default: '3,4,5')") -tf.flags.DEFINE_integer("num_filters", 128, "Number of filters per filter size (default: 128)") +tf.flags.DEFINE_integer("num_filters", 512, "Number of filters per filter size (default: 128)") tf.flags.DEFINE_float("dropout_keep_prob", 0.5, "Dropout keep probability (default: 0.5)") tf.flags.DEFINE_float("l2_reg_lambda", 0.0, "L2 regularizaion lambda (default: 0.0)") From 3e30da5a0168ca744b91058b09bad261d96b3dfc Mon Sep 17 00:00:00 2001 From: Sun Ro Lee Date: Thu, 8 Dec 2016 14:01:00 +0900 Subject: [PATCH 2/2] support tf-gpu-win --- .idea/cnn-text-classification-tf.iml | 12 - .idea/misc.xml | 14 - .idea/modules.xml | 8 - .idea/vcs.xml | 6 - .idea/workspace.xml | 383 --------------------------- 5 files changed, 423 deletions(-) delete mode 100644 .idea/cnn-text-classification-tf.iml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml diff --git a/.idea/cnn-text-classification-tf.iml b/.idea/cnn-text-classification-tf.iml deleted file mode 100644 index 6f63a63cc..000000000 --- a/.idea/cnn-text-classification-tf.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 1fc562422..000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index a01c66af1..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7f4..000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index bf4f3d8e7..000000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1481171616617 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - file://$PROJECT_DIR$/text_cnn.py - 32 - - - file://$PROJECT_DIR$/text_cnn.py - 36 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file