Skip to content

Commit

Permalink
Merge branch 'cntkmaster' into merge
Browse files Browse the repository at this point in the history
  • Loading branch information
diyessi committed Sep 23, 2015
2 parents 4370b83 + 0db1525 commit 3a58dff
Show file tree
Hide file tree
Showing 51 changed files with 4,137 additions and 3,736 deletions.
99 changes: 90 additions & 9 deletions CNTK.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30324.0
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CNTKMathDll", "Math\Math\Math.vcxproj", "{60BDB847-D0C4-4FD3-A947-0C15C08BCDB5}"
ProjectSection(ProjectDependencies) = postProject
Expand Down Expand Up @@ -171,9 +171,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CheckInSuites", "CheckInSui
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SparsePCReader", "DataReader\SparsePCReader\SparsePCReader.vcxproj", "{CE429AA2-3778-4619-8FD1-49BA3B81197B}"
ProjectSection(ProjectDependencies) = postProject
{60BDB847-D0C4-4FD3-A947-0C15C08BCDB5} = {60BDB847-D0C4-4FD3-A947-0C15C08BCDB5}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Speech", "Speech", "{C47CDAA5-6D6C-429E-BC89-7CA0F868FDC8}"
ProjectSection(SolutionItems) = preProject
Expand Down Expand Up @@ -255,6 +252,90 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DoublePrecision", "DoublePr
Tests\ParallelTraining\NoQuantization\DoublePrecision\testcases.yml = Tests\ParallelTraining\NoQuantization\DoublePrecision\testcases.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "KaldiReader", "KaldiReader", "{3E9C89B1-C045-4F42-92B2-F9FFFFC2DBD4}"
ProjectSection(SolutionItems) = preProject
DataReader\KaldiReader\basetypes.h = DataReader\KaldiReader\basetypes.h
DataReader\KaldiReader\basetypes.old.h = DataReader\KaldiReader\basetypes.old.h
DataReader\KaldiReader\biggrowablevectors.h = DataReader\KaldiReader\biggrowablevectors.h
DataReader\KaldiReader\chunkevalsource.h = DataReader\KaldiReader\chunkevalsource.h
DataReader\KaldiReader\DataReader.cpp = DataReader\KaldiReader\DataReader.cpp
DataReader\KaldiReader\DataWriter.cpp = DataReader\KaldiReader\DataWriter.cpp
DataReader\KaldiReader\dllmain.cpp = DataReader\KaldiReader\dllmain.cpp
DataReader\KaldiReader\fileutil.cpp = DataReader\KaldiReader\fileutil.cpp
DataReader\KaldiReader\fileutil.h = DataReader\KaldiReader\fileutil.h
DataReader\KaldiReader\fileutil.old.h = DataReader\KaldiReader\fileutil.old.h
DataReader\KaldiReader\htkfeatio.h = DataReader\KaldiReader\htkfeatio.h
DataReader\KaldiReader\HTKMLFReader.cpp = DataReader\KaldiReader\HTKMLFReader.cpp
DataReader\KaldiReader\HTKMLFReader.h = DataReader\KaldiReader\HTKMLFReader.h
DataReader\KaldiReader\HTKMLFWriter.cpp = DataReader\KaldiReader\HTKMLFWriter.cpp
DataReader\KaldiReader\HTKMLFWriter.h = DataReader\KaldiReader\HTKMLFWriter.h
DataReader\KaldiReader\latticearchive.cpp = DataReader\KaldiReader\latticearchive.cpp
DataReader\KaldiReader\latticearchive.h = DataReader\KaldiReader\latticearchive.h
DataReader\KaldiReader\latticestorage.h = DataReader\KaldiReader\latticestorage.h
DataReader\KaldiReader\minibatchiterator.h = DataReader\KaldiReader\minibatchiterator.h
DataReader\KaldiReader\minibatchsourcehelpers.h = DataReader\KaldiReader\minibatchsourcehelpers.h
DataReader\KaldiReader\msra_mgram.h = DataReader\KaldiReader\msra_mgram.h
DataReader\KaldiReader\numahelpers.h = DataReader\KaldiReader\numahelpers.h
DataReader\KaldiReader\pplhelpers.h = DataReader\KaldiReader\pplhelpers.h
DataReader\KaldiReader\readaheadsource.h = DataReader\KaldiReader\readaheadsource.h
DataReader\KaldiReader\rollingwindowsource.h = DataReader\KaldiReader\rollingwindowsource.h
DataReader\KaldiReader\simple_checked_arrays.h = DataReader\KaldiReader\simple_checked_arrays.h
DataReader\KaldiReader\simplesenonehmm.h = DataReader\KaldiReader\simplesenonehmm.h
DataReader\KaldiReader\simplethread.h = DataReader\KaldiReader\simplethread.h
DataReader\KaldiReader\ssefloat4.h = DataReader\KaldiReader\ssefloat4.h
DataReader\KaldiReader\ssematrix.h = DataReader\KaldiReader\ssematrix.h
DataReader\KaldiReader\stdafx.cpp = DataReader\KaldiReader\stdafx.cpp
DataReader\KaldiReader\stdafx.h = DataReader\KaldiReader\stdafx.h
DataReader\KaldiReader\targetver.h = DataReader\KaldiReader\targetver.h
DataReader\KaldiReader\utterancesource.h = DataReader\KaldiReader\utterancesource.h
DataReader\KaldiReader\utterancesourcemulti.h = DataReader\KaldiReader\utterancesourcemulti.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Kaldi2Reader", "Kaldi2Reader", "{C70E1572-20FF-496C-A0A9-10AA6755A07C}"
ProjectSection(SolutionItems) = preProject
DataReader\Kaldi2Reader\basetypes.h = DataReader\Kaldi2Reader\basetypes.h
DataReader\Kaldi2Reader\biggrowablevectors.h = DataReader\Kaldi2Reader\biggrowablevectors.h
DataReader\Kaldi2Reader\chunkevalsource.h = DataReader\Kaldi2Reader\chunkevalsource.h
DataReader\Kaldi2Reader\DataReader.cpp = DataReader\Kaldi2Reader\DataReader.cpp
DataReader\Kaldi2Reader\DataWriter.cpp = DataReader\Kaldi2Reader\DataWriter.cpp
DataReader\Kaldi2Reader\dllmain.cpp = DataReader\Kaldi2Reader\dllmain.cpp
DataReader\Kaldi2Reader\DOCUMENTATION.txt = DataReader\Kaldi2Reader\DOCUMENTATION.txt
DataReader\Kaldi2Reader\fileutil.cpp = DataReader\Kaldi2Reader\fileutil.cpp
DataReader\Kaldi2Reader\fileutil.h = DataReader\Kaldi2Reader\fileutil.h
DataReader\Kaldi2Reader\htkfeatio.h = DataReader\Kaldi2Reader\htkfeatio.h
DataReader\Kaldi2Reader\htkfeatio_utils.h = DataReader\Kaldi2Reader\htkfeatio_utils.h
DataReader\Kaldi2Reader\HTKMLFReader.cpp = DataReader\Kaldi2Reader\HTKMLFReader.cpp
DataReader\Kaldi2Reader\HTKMLFReader.h = DataReader\Kaldi2Reader\HTKMLFReader.h
DataReader\Kaldi2Reader\HTKMLFWriter.cpp = DataReader\Kaldi2Reader\HTKMLFWriter.cpp
DataReader\Kaldi2Reader\HTKMLFWriter.h = DataReader\Kaldi2Reader\HTKMLFWriter.h
DataReader\Kaldi2Reader\kaldi.h = DataReader\Kaldi2Reader\kaldi.h
DataReader\Kaldi2Reader\KaldiSequenceTrainingDerivative.cpp = DataReader\Kaldi2Reader\KaldiSequenceTrainingDerivative.cpp
DataReader\Kaldi2Reader\KaldiSequenceTrainingDerivative.h = DataReader\Kaldi2Reader\KaldiSequenceTrainingDerivative.h
DataReader\Kaldi2Reader\latticearchive.cpp = DataReader\Kaldi2Reader\latticearchive.cpp
DataReader\Kaldi2Reader\latticearchive.h = DataReader\Kaldi2Reader\latticearchive.h
DataReader\Kaldi2Reader\latticestorage.h = DataReader\Kaldi2Reader\latticestorage.h
DataReader\Kaldi2Reader\minibatchiterator.h = DataReader\Kaldi2Reader\minibatchiterator.h
DataReader\Kaldi2Reader\minibatchsourcehelpers.h = DataReader\Kaldi2Reader\minibatchsourcehelpers.h
DataReader\Kaldi2Reader\msra_mgram.h = DataReader\Kaldi2Reader\msra_mgram.h
DataReader\Kaldi2Reader\notes.txt = DataReader\Kaldi2Reader\notes.txt
DataReader\Kaldi2Reader\numahelpers.h = DataReader\Kaldi2Reader\numahelpers.h
DataReader\Kaldi2Reader\pplhelpers.h = DataReader\Kaldi2Reader\pplhelpers.h
DataReader\Kaldi2Reader\readaheadsource.h = DataReader\Kaldi2Reader\readaheadsource.h
DataReader\Kaldi2Reader\rollingwindowsource.h = DataReader\Kaldi2Reader\rollingwindowsource.h
DataReader\Kaldi2Reader\simple_checked_arrays.h = DataReader\Kaldi2Reader\simple_checked_arrays.h
DataReader\Kaldi2Reader\simplesenonehmm.h = DataReader\Kaldi2Reader\simplesenonehmm.h
DataReader\Kaldi2Reader\simplethread.h = DataReader\Kaldi2Reader\simplethread.h
DataReader\Kaldi2Reader\ssefloat4.h = DataReader\Kaldi2Reader\ssefloat4.h
DataReader\Kaldi2Reader\ssematrix.h = DataReader\Kaldi2Reader\ssematrix.h
DataReader\Kaldi2Reader\stdafx.cpp = DataReader\Kaldi2Reader\stdafx.cpp
DataReader\Kaldi2Reader\stdafx.h = DataReader\Kaldi2Reader\stdafx.h
DataReader\Kaldi2Reader\targetver.h = DataReader\Kaldi2Reader\targetver.h
DataReader\Kaldi2Reader\UtteranceDerivativeBuffer.cpp = DataReader\Kaldi2Reader\UtteranceDerivativeBuffer.cpp
DataReader\Kaldi2Reader\UtteranceDerivativeBuffer.h = DataReader\Kaldi2Reader\UtteranceDerivativeBuffer.h
DataReader\Kaldi2Reader\UtteranceDerivativeComputationInterface.h = DataReader\Kaldi2Reader\UtteranceDerivativeComputationInterface.h
DataReader\Kaldi2Reader\utterancesourcemulti.h = DataReader\Kaldi2Reader\utterancesourcemulti.h
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Expand All @@ -270,7 +351,9 @@ Global
{E6F26F9A-FF64-4F0A-B749-CD309EE357EE}.Release|x64.ActiveCfg = Release|x64
{E6F26F9A-FF64-4F0A-B749-CD309EE357EE}.Release|x64.Build.0 = Release|x64
{6CEE834A-8104-46A8-8902-64C81BD7928F}.Debug|x64.ActiveCfg = Debug|x64
{6CEE834A-8104-46A8-8902-64C81BD7928F}.Debug|x64.Build.0 = Debug|x64
{6CEE834A-8104-46A8-8902-64C81BD7928F}.Release|x64.ActiveCfg = Release|x64
{6CEE834A-8104-46A8-8902-64C81BD7928F}.Release|x64.Build.0 = Release|x64
{33D2FD22-DEF2-4507-A58A-368F641AEBE5}.Debug|x64.ActiveCfg = Debug|x64
{33D2FD22-DEF2-4507-A58A-368F641AEBE5}.Debug|x64.Build.0 = Debug|x64
{33D2FD22-DEF2-4507-A58A-368F641AEBE5}.Release|x64.ActiveCfg = Release|x64
Expand All @@ -296,6 +379,7 @@ Global
{0F30EBCF-09F3-4EED-BF54-4214BCE53FEC}.Debug|x64.ActiveCfg = Debug|x64
{0F30EBCF-09F3-4EED-BF54-4214BCE53FEC}.Debug|x64.Build.0 = Debug|x64
{0F30EBCF-09F3-4EED-BF54-4214BCE53FEC}.Release|x64.ActiveCfg = Release|x64
{0F30EBCF-09F3-4EED-BF54-4214BCE53FEC}.Release|x64.Build.0 = Release|x64
{B3DD765E-694E-4494-BAD7-37BBF2942517}.Debug|x64.ActiveCfg = Debug|x64
{B3DD765E-694E-4494-BAD7-37BBF2942517}.Debug|x64.Build.0 = Debug|x64
{B3DD765E-694E-4494-BAD7-37BBF2942517}.Release|x64.ActiveCfg = Release|x64
Expand Down Expand Up @@ -340,11 +424,6 @@ Global
{6CEE834A-8104-46A8-8902-64C81BD7928F} = {D45DF403-6781-444E-B654-A96868C5BE68}
{33D2FD22-DEF2-4507-A58A-368F641AEBE5} = {33EBFE78-A1A8-4961-8938-92A271941F94}
{668BEED5-AC07-4F35-B3AE-EE65A7F9C976} = {D45DF403-6781-444E-B654-A96868C5BE68}
{0F30EBCF-09F3-4EED-BF54-4214BCE53FEC} = {D45DF403-6781-444E-B654-A96868C5BE68}
{DBB3C106-B0B4-4059-8477-C89528CEC1B0} = {D45DF403-6781-444E-B654-A96868C5BE68}
{C47CDAA5-6D6C-429E-BC89-7CA0F868FDC8} = {D45DF403-6781-444E-B654-A96868C5BE68}
{7C4E77C9-6B17-4B02-82C1-DB62EEE2635B} = {D45DF403-6781-444E-B654-A96868C5BE68}
{5E666C53-2D82-49C9-9127-3FDDC321C741} = {D45DF403-6781-444E-B654-A96868C5BE68}
{E6646FFE-3588-4276-8A15-8D65C22711C1} = {33EBFE78-A1A8-4961-8938-92A271941F94}
{1D5787D4-52E4-45DB-951B-82F220EE0C6A} = {33EBFE78-A1A8-4961-8938-92A271941F94}
{62836DC1-DF77-4B98-BF2D-45C943B7DDC6} = {33EBFE78-A1A8-4961-8938-92A271941F94}
Expand Down Expand Up @@ -376,5 +455,7 @@ Global
{B6725C9F-A6D2-4269-9B74-7888A90F7884} = {5E666C53-2D82-49C9-9127-3FDDC321C741}
{B27DD434-EECD-4EE0-A03B-1150EB87258E} = {B6725C9F-A6D2-4269-9B74-7888A90F7884}
{A4884465-CFBB-4A64-A9DE-690E1A63EF7E} = {B6725C9F-A6D2-4269-9B74-7888A90F7884}
{3E9C89B1-C045-4F42-92B2-F9FFFFC2DBD4} = {39E42C4B-A078-4CA4-9D92-B883D8129601}
{C70E1572-20FF-496C-A0A9-10AA6755A07C} = {39E42C4B-A078-4CA4-9D92-B883D8129601}
EndGlobalSection
EndGlobal
15 changes: 8 additions & 7 deletions Common/DataReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ DataReader<ElemType>::DataReader(const ConfigParameters& config)
for (size_t i = 0; i < m_ioNames.size(); i++)
{
m_dataReader[m_ioNames[i]]->Init(m_configure[m_ioNames[i]]);
m_dataReader[m_ioNames[i]]->SetNbrSlicesEachRecurrentIter(mNbrUttPerMinibatch);
m_dataReader[m_ioNames[i]]->SetNumParallelSequences(mNbrUttPerMinibatch);
}
}

Expand Down Expand Up @@ -191,9 +191,9 @@ bool DataReader<ElemType>::GetMinibatch(std::map<std::wstring, Matrix<ElemType>*
for (size_t i = 0; i < m_ioNames.size(); i++)
{
if (nbr > 0)
m_dataReader[m_ioNames[i]]->SetNbrSlicesEachRecurrentIter(nbr);
m_dataReader[m_ioNames[i]]->SetNumParallelSequences(nbr);
bRet &= m_dataReader[m_ioNames[i]]->GetMinibatch(matrices);
thisNbr = m_dataReader[m_ioNames[i]]->NumberSlicesInEachRecurrentIter();
thisNbr = m_dataReader[m_ioNames[i]]->GetNumParallelSequences();
if (nbr > 0 && thisNbr != nbr)
LogicError("DataReader<ElemType>::GetMinibatch: The specified number of utterances per minibatch is not consistent to the actual number of utterances per minibatch");
nbr = thisNbr;
Expand All @@ -202,16 +202,16 @@ bool DataReader<ElemType>::GetMinibatch(std::map<std::wstring, Matrix<ElemType>*
}

template<class ElemType>
size_t DataReader<ElemType>::NumberSlicesInEachRecurrentIter()
size_t DataReader<ElemType>::GetNumParallelSequences()
{
size_t nNbr = 0;
for (size_t i = 0; i < m_ioNames.size(); i++)
{
IDataReader<ElemType> * ptr = m_dataReader[m_ioNames[i]];
if (nNbr == 0)
nNbr = ptr->NumberSlicesInEachRecurrentIter();
if (nNbr != ptr->NumberSlicesInEachRecurrentIter())
LogicError("NumberSlicesInEachRecurrentIter: number of slices in each minibatch not consistent for these streams");
nNbr = ptr->GetNumParallelSequences();
if (nNbr != ptr->GetNumParallelSequences())
LogicError("GetNumParallelSequences: number of slices in each minibatch not consistent for these streams");
}
return nNbr;
}
Expand Down Expand Up @@ -244,6 +244,7 @@ bool DataReader<ElemType>::GetProposalObs(std::map<std::wstring, Matrix<ElemType
template<class ElemType>
void DataReader<ElemType>::CopyMBLayoutTo(MBLayoutPtr pMBLayout)
{
// BUGBUG: This copies all data reader's layout info on top of each other, keeping only the last one; likely not what was intended.
for (size_t i = 0; i < m_ioNames.size(); i++)
m_dataReader[m_ioNames[i]]->CopyMBLayoutTo(pMBLayout);
}
Expand Down
6 changes: 3 additions & 3 deletions Common/Include/DataReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ class DATAREADER_API IDataReader
}

virtual bool GetMinibatch(std::map<std::wstring, Matrix<ElemType>*>& matrices) = 0;
virtual size_t NumberSlicesInEachRecurrentIter() = 0;
virtual size_t GetNumParallelSequences() = 0;
virtual int GetSentenceEndIdFromOutputLabel() { return -1; };
virtual void SetNbrSlicesEachRecurrentIter(const size_t sz) { mBlgSize = sz; };
virtual void SetNumParallelSequences(const size_t sz) { mBlgSize = sz; };
virtual bool RequireSentenceSeg() { return false; };
virtual const std::map<LabelIdType, LabelType>& GetLabelMapping(const std::wstring&) { NOT_IMPLEMENTED; };
virtual void SetLabelMapping(const std::wstring&, const std::map<LabelIdType, LabelType>&) { NOT_IMPLEMENTED; };
Expand Down Expand Up @@ -198,7 +198,7 @@ class DataReader: public IDataReader<ElemType>, protected Plugin
// returns - true if there are more minibatches, false if no more minibatchs remain
virtual bool GetMinibatch(std::map<std::wstring, Matrix<ElemType>*>& matrices);

size_t NumberSlicesInEachRecurrentIter();
size_t GetNumParallelSequences();
int GetSentenceEndIdFromOutputLabel();

// GetLabelMapping - Gets the label mapping from integer index to label type
Expand Down
22 changes: 22 additions & 0 deletions Common/Include/basetypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -1054,6 +1054,28 @@ class RegisterModule

// why is this in basetypes.h?
// boundary flags for a frame
// (note for refactoring:) This is currently used by
// - RecurrentNodes: SetMBLayout(), ComputeInputPartialSRP(), EvaluateThisNodeSRP(), .. check SentenceBegin_or_End
// (plus PastValueNode and FutureValueNode base class template parameter)
// - SimpleEvaluator.h: FindBestPath(), FindBestPathWithVariableLength() --doing a bad hack, pretending MBs of 1 frame
// deprecated:
// - LSTMNode
// through ComputationNode::MaskMissingColumnsToZero():
// - nodes where the user explicitly requested masking (NeedToMaskMissingColumnsToZero() == true)
// - ComputeGradientForChildren()
// - all training and evaluation criterion nodes .. TODO: double-confirm it's all Training nodes; but those also have NodeDoesItsOwnCustomizedMissingColumnsMasking() == true
// in core classes:
// - ComputationNetwork: GetNumSamplesWithLabel(), MaskMissingColumnsToZero() --both are cheap in case of no flags set
// - Matrix.h
// - SGD::DecimateMinibatchWithSentences() (should be done differently)
// and readers that generate the flags:
// - HTKMLFReader::GetMinibatchToTrainOrTest()
// - BatchLUSequenceReader::EnsureDataAvailable(), GetMinibatch(), DataEnd()
// - EvalReader::CopyMBLayoutTo()
// - BatchSequenceReader::SetSentenceBegin()
// others:
// - MathPerformanceTests.cpp
// ==> conclusion: safe to ALWAYS pass the full layout, will not be inefficient
enum class MinibatchPackingFlags : char // (note: not using unsigned char because these go into a matrix, and we use Matrix<char>, since we use it as a data holder)
{
None = 0,
Expand Down
5 changes: 2 additions & 3 deletions DataReader/BinaryReader/BinaryReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -419,10 +419,9 @@ class BinaryReader : public IDataReader<ElemType>
virtual void StartMinibatchLoop(size_t mbSize, size_t epoch, size_t requestedEpochSamples=requestDataSize);
virtual bool GetMinibatch(std::map<std::wstring, Matrix<ElemType>*>& matrices);

size_t NumberSlicesInEachRecurrentIter() { return 1 ;}
void SetNbrSlicesEachRecurrentIter(const size_t) { };
size_t GetNumParallelSequences() { return 1 ;}
void SetNumParallelSequences(const size_t) { };
void CopyMBLayoutTo(MBLayoutPtr) {};

virtual const std::map<LabelIdType, LabelType>& GetLabelMapping(const std::wstring& sectionName);
virtual void SetLabelMapping(const std::wstring& sectionName, const std::map<typename BinaryReader<ElemType>::LabelIdType, typename BinaryReader<ElemType>::LabelType>& labelMapping);
virtual bool GetData(const std::wstring& sectionName, size_t numRecords, void* data, size_t& dataBufferSize, size_t recordStart=0);
Expand Down
4 changes: 2 additions & 2 deletions DataReader/DSSMReader/DSSMReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ class DSSMReader : public IDataReader<ElemType>
virtual void StartMinibatchLoop(size_t mbSize, size_t epoch, size_t requestedEpochSamples=requestDataSize);
virtual bool GetMinibatch(std::map<std::wstring, Matrix<ElemType>*>& matrices);

size_t NumberSlicesInEachRecurrentIter() { return 1 ;}
void SetNbrSlicesEachRecurrentIter(const size_t) { };
size_t GetNumParallelSequences() { return 1 ;}
void SetNumParallelSequences(const size_t) { };
void CopyMBLayoutTo(MBLayoutPtr) {};

virtual const std::map<LabelIdType, LabelType>& GetLabelMapping(const std::wstring& sectionName);
Expand Down
2 changes: 2 additions & 0 deletions DataReader/HTKMLFReader/HTKMLFReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1607,6 +1607,8 @@ namespace Microsoft { namespace MSR { namespace CNTK {
{
if (!m_framemode)
*pMBLayout = *m_pMBLayout;
else
pMBLayout->SetAllNone(); // no flags in frame mode
}


Expand Down
4 changes: 2 additions & 2 deletions DataReader/HTKMLFReader/HTKMLFReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ class HTKMLFReader : public IDataReader<ElemType>

bool ReNewBufferForMultiIO(size_t i);

size_t NumberSlicesInEachRecurrentIter() { return m_numberOfuttsPerMinibatch ;}
void SetNbrSlicesEachRecurrentIter(const size_t) { };
size_t GetNumParallelSequences() { return m_numberOfuttsPerMinibatch; }
void SetNumParallelSequences(const size_t) { };

void GetDataNamesFromConfig(const ConfigParameters& readerConfig, std::vector<std::wstring>& features, std::vector<std::wstring>& labels);

Expand Down
Loading

0 comments on commit 3a58dff

Please sign in to comment.