CompositeMinibatchSource::CompositeMinibatchSource(const MinibatchSourceConfig& configuration) : m_epochEndReached(false), m_prevMinibatchSize(0), m_maxNumSamplesToRead(configuration.maxSamples), m_maxNumSweepsToRead(configuration.maxSweeps), m_truncationLength(0), m_numWorkers(1), m_workerRank(0), m_restorePosition(0) { m_truncationLength = configuration.truncationLength; auto augmentedConfiguration = Internal::ToDictionary(configuration); ConfigParameters config; std::wstringstream s; for (const auto& keyValuePair : *(augmentedConfiguration.m_dictionaryData)) AddConfigString(s, keyValuePair.first, keyValuePair.second, 0); config.Parse(msra::strfun::utf8(s.str())); typedef Reader*(*CreateCompositeDataReaderProc)(const ConfigParameters* parameters); CreateCompositeDataReaderProc createReaderProc = (CreateCompositeDataReaderProc)Plugin().Load(L"CompositeDataReader", "CreateCompositeDataReader"); std::shared_ptr<Microsoft::MSR::CNTK::Reader> compositeDataReader(createReaderProc(&config)); m_compositeDataReaderStreamDescs = compositeDataReader->GetStreamDescriptions(); for (auto streamDesc : m_compositeDataReaderStreamDescs) m_streamInfos.insert({ streamDesc->m_name, streamDesc->m_id, AsStorageFormat(streamDesc->m_storageType), AsDataType(streamDesc->m_elementType), AsNDShape(*(streamDesc->m_sampleLayout)) }); m_shim = std::shared_ptr<ReaderShim<float>>(new ReaderShim<float>(compositeDataReader), [](ReaderShim<float>* x) { x->Destroy(); }); m_shim->Init(config); }
bool CSmartServer::RetrieveBinDir() { string sBinaryDir; bool bResult = false; if (FileUtils::GetBinaryDir(sBinaryDir)) { AddConfigString(ECO_LOCATION_PATH, sBinaryDir); bResult = true; } else { LOG_ERROR("Unable to retrieve binary directory"); } return bResult; }