 
   // Right now we're only reading the first few sentence pairs, and defining
   // that as the step size.
-  int batch_size = 20;
+  int batch_size = 100;
   int num_source_tokens = -1;
   int num_target_tokens = -1;
   std::vector<std::vector<size_t> > source_sentences, target_sentences;

    if (num_target_tokens < 0 || target_ids.size() > num_target_tokens) {
      num_target_tokens = target_ids.size();
    }
    if (source_sentences.size() == 1000) break;
  }
  std::cerr << "Done." << std::endl;
  std::cerr << source_sentences.size()

  std::cerr << "Building output layer..." << std::endl;

  // Softmax layer and cost function.
  //std::vector<Expr> Yp;
  //Yp.emplace_back(named(softmax(dot(h0_d, Why) + by), "pred"));
  //Expr word_cost = sum(Y[0] * log(Yp[0]), axis=1);
  Expr word_cost = cross_entropy(dot(h0_d, Why) + by, Y[0]);
  for (int t = 1; t <= num_outputs; ++t) {
    //Yp.emplace_back(named(softmax(dot(S[t-1], Why) + by), "pred"));
    //word_cost = word_cost + sum(Y[t] * log(Yp[t]), axis=1);
    word_cost = word_cost + cross_entropy(dot(S[t-1], Why) + by, Y[t]);
  }
  //auto cost = named(-mean(word_cost, axis=0), "cost");
  auto cost = named(mean(word_cost, axis=0), "cost");

  std::cerr << "Done." << std::endl;

