示例#1
0
const char*
Application::GetResourceRoot ()
{
	if (!resource_root) {
		char *buf = g_build_filename (Runtime::GetWindowingSystem ()->GetTemporaryFolder (), "moonlight-app.XXXXXX", NULL);
		// create a root temp directory for all files
		if (!(resource_root = MakeTempDir (buf)))
			g_free (buf);
		Deployment::GetCurrent()->TrackPath (resource_root);
	}
	return resource_root;
}
示例#2
0
const char *
HttpHandler::GetDownloadDir ()
{
    if (download_dir == NULL) {
        char *buf = g_build_filename (g_get_tmp_dir (), "moonlight-downloads.XXXXXX", NULL);
        // create a root temp directory for all files
        download_dir = MakeTempDir (buf);
        if (download_dir == NULL) {
            g_free (buf);
            printf ("Moonlight: Could not create temporary download directory.\n");
        } else {
            GetDeployment ()->TrackPath (download_dir);
            LOG_DOWNLOADER ("HttpHandler::GetDownloadDir (): Created temporary download directory: %s\n", download_dir);
        }
    }

    return download_dir;
}
TYPED_TEST(LayerFactoryTest, TestCreateLayer) {
  typedef typename TypeParam::Dtype Dtype;
  typename LayerRegistry<Dtype>::CreatorRegistry& registry =
      LayerRegistry<Dtype>::Registry();
  shared_ptr<Layer<Dtype> > layer;
  for (typename LayerRegistry<Dtype>::CreatorRegistry::iterator iter =
       registry.begin(); iter != registry.end(); ++iter) {
    // Special case: PythonLayer is checked by pytest
    if (iter->first == "Python") { continue; }
    LayerParameter layer_param;
    // Data layers expect a DB
    if (iter->first == "Data") {
      string tmp;
      MakeTempDir(&tmp);
      boost::scoped_ptr<db::DB> db(db::GetDB(DataParameter_DB_LEVELDB));
      db->Open(tmp, db::NEW);
      db->Close();
      layer_param.mutable_data_param()->set_source(tmp);
    }
    layer_param.set_type(iter->first);
    layer = LayerRegistry<Dtype>::CreateLayer(layer_param);
    EXPECT_EQ(iter->first, layer->type());
  }
}
 string RunLeastSquaresSolver(const Dtype learning_rate,
     const Dtype weight_decay, const Dtype momentum, const int num_iters,
     const int iter_size = 1, const bool snapshot = false,
     const char* from_snapshot = NULL) {
   ostringstream proto;
   proto <<
      "snapshot_after_train: " << snapshot << " "
      "max_iter: " << num_iters << " "
      "base_lr: " << learning_rate << " "
      "lr_policy: 'fixed' "
      "iter_size: " << iter_size << " "
      "net_param { "
      "  name: 'TestNetwork' "
      "  layer { "
      "    name: 'data' "
      "    type: 'HDF5Data' "
      "    hdf5_data_param { "
      "      source: '" << *(this->input_file_) << "' "
      "      batch_size: " << num_ / iter_size << " "
      "    } "
      "    top: 'data' "
      "    top: 'targets' "
      "  } ";
   if (share_) {
     proto <<
        "  layer { "
        "    name: 'slice' "
        "    type: 'Slice' "
        "    bottom: 'data' "
        "    top: 'data1' "
        "    top: 'data2' "
        "    slice_param { "
        "      axis: 0 "
        "    } "
        "  } ";
   }
   proto <<
      "  layer { "
      "    name: 'innerprod' "
      "    type: 'InnerProduct' "
      "    param { name: 'weights' } "
      "    param { name: 'bias' } "
      "    inner_product_param { "
      "      num_output: 1 "
      "      weight_filler { "
      "        type: 'gaussian' "
      "        std: 1.0 "
      "      } "
      "      bias_filler { "
      "        type: 'gaussian' "
      "        std: 1.0 "
      "      } "
      "    } "
      "    bottom: '" << string(share_ ? "data1": "data") << "' "
      "    top: '" << string(share_ ? "innerprod1": "innerprod") << "' "
      "  } ";
   if (share_) {
     proto <<
        "  layer { "
        "    name: 'innerprod2' "
        "    type: 'InnerProduct' "
        "    param { name: 'weights' } "
        "    param { name: 'bias' } "
        "    inner_product_param { "
        "      num_output: 1 "
        "      weight_filler { "
        "        type: 'gaussian' "
        "        std: 1.0 "
        "      } "
        "      bias_filler { "
        "        type: 'gaussian' "
        "        std: 1.0 "
        "      } "
        "    } "
        "    bottom: 'data2' "
        "    top: 'innerprod2' "
        "  } "
        "  layer { "
        "    name: 'concat' "
        "    type: 'Concat' "
        "    bottom: 'innerprod1' "
        "    bottom: 'innerprod2' "
        "    top: 'innerprod' "
        "    concat_param { "
        "      axis: 0 "
        "    } "
        "  } ";
   }
   proto <<
      "  layer { "
      "    name: 'loss' "
      "    type: 'EuclideanLoss' "
      "    bottom: 'innerprod' "
      "    bottom: 'targets' "
      "  } "
      "} ";
   if (weight_decay != 0) {
     proto << "weight_decay: " << weight_decay << " ";
   }
   if (momentum != 0) {
     proto << "momentum: " << momentum << " ";
   }
   MakeTempDir(&snapshot_prefix_);
   proto << "snapshot_prefix: '" << snapshot_prefix_ << "/' ";
   if (snapshot) {
     proto << "snapshot: " << num_iters << " ";
   }
   Caffe::set_random_seed(this->seed_);
   this->InitSolverFromProtoString(proto.str());
   if (from_snapshot != NULL) {
     this->solver_->Restore(from_snapshot);
     vector<Blob<Dtype>*> empty_bottom_vec;
     for (int i = 0; i < this->solver_->iter(); ++i) {
       this->solver_->net()->Forward(empty_bottom_vec);
     }
   }
   this->solver_->Solve();
   if (snapshot) {
     ostringstream resume_file;
     resume_file << snapshot_prefix_ << "/_iter_" << num_iters
                 << ".solverstate";
     string resume_filename = resume_file.str();
     return resume_filename;
   }
   return string();
 }