This commit is contained in:
Zhou Wang 2016-08-17 15:27:15 +02:00
Родитель 705951a4c0
Коммит 86ec025f32
33 изменённых файлов: 2141 добавлений и 505355 удалений

Просмотреть файл

@ -30,6 +30,9 @@
<HasOpenCv>false</HasOpenCv>
<HasOpenCv Condition="Exists('$(OPENCV_PATH)') Or Exists('$(OPENCV_PATH_V31)')">true</HasOpenCv>
<HasBoost>false</HasBoost>
<HasBoost Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">true</HasBoost>
<UseZip>false</UseZip>
<UseZip Condition="Exists('$(ZLIB_PATH)')">true</UseZip>
</PropertyGroup>

Просмотреть файл

@ -711,6 +711,9 @@ endif
########################################
ifdef OPENCV_PATH
ifdef BOOST_PATH
INCLUDEPATH += $(BOOST_PATH)/include
IMAGE_READER_LIBS += -lopencv_core -lopencv_imgproc -lopencv_imgcodecs
@ -741,6 +744,7 @@ $(IMAGEREADER): $(IMAGEREADER_OBJ) | $(CNTKMATH_LIB)
@echo $(SEPARATOR)
$(CXX) $(LDFLAGS) -shared $(patsubst %,-L%, $(LIBDIR) $(LIBPATH)) $(patsubst %,$(RPATH)%, $(ORIGINDIR) $(LIBPATH)) -o $@ $^ -l$(CNTKMATH) $(IMAGE_READER_LIBS)
endif
endif
########################################
# 1bit SGD setup
@ -839,7 +843,6 @@ UNITTEST_READER_SRC = \
$(SOURCEDIR)/../Tests/UnitTests/ReaderTests/HTKLMFReaderTests.cpp \
$(SOURCEDIR)/../Tests/UnitTests/ReaderTests/ImageReaderTests.cpp \
$(SOURCEDIR)/../Tests/UnitTests/ReaderTests/ReaderLibTests.cpp \
$(SOURCEDIR)/../Tests/UnitTests/ReaderTests/UCIFastReaderTests.cpp \
$(SOURCEDIR)/../Tests/UnitTests/ReaderTests/stdafx.cpp \
$(SOURCEDIR)/Readers/CNTKTextFormatReader/Indexer.cpp \
$(SOURCEDIR)/Readers/CNTKTextFormatReader/TextParser.cpp \

Просмотреть файл

@ -127,9 +127,10 @@
<ClCompile Include="ZipByteReader.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Target Name="Build" Condition="$(HasOpenCv)" Outputs="$(TargetPath)" DependsOnTargets="$(BuildDependsOn)" />
<Target Name="Build" Condition="$(HasOpenCv) And $(HasBoost)" Outputs="$(TargetPath)" DependsOnTargets="$(BuildDependsOn)" />
<ImportGroup Label="ExtensionTargets" />
<Target Name="CheckDependencies">
<Warning Condition="!$(HasBoost)" Text="ImageReader requires the Boost library to build. Please see https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-Windows#boost for installation instructions." />
<Warning Condition="!$(HasOpenCv)" Text="ImageReader requires the OpenCV library to build. Please see https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-Windows#opencv for installation instructions." />
<Warning Condition="!$(UseZip)" Text="zlib and libzip libraries were not found, ImageReader will be built without zip container support. Please see https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-Windows#libzip for installation instructions." />
</Target>

Просмотреть файл

@ -7,14 +7,13 @@
#include <algorithm>
#include <unordered_map>
#include <random>
#include <boost/random/bernoulli_distribution.hpp>
#include <boost/random/normal_distribution.hpp>
#include "ImageTransformers.h"
#include "Config.h"
#include "ConcStack.h"
#include "StringUtil.h"
#include "ElementTypeUtils.h"
#include <boost/random/bernoulli_distribution.hpp>
#include <boost/random/normal_distribution.hpp>
namespace Microsoft { namespace MSR { namespace CNTK
{

Просмотреть файл

@ -26,10 +26,6 @@
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\CNTK.Cpp.props" />
<PropertyGroup>
<HasBoost>false</HasBoost>
<HasBoost Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">true</HasBoost>
</PropertyGroup>
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>

Просмотреть файл

@ -41,18 +41,6 @@
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Choose>
<When Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">
<PropertyGroup>
<HasBoost>true</HasBoost>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<HasBoost>false</HasBoost>
</PropertyGroup>
</Otherwise>
</Choose>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Condition="$(GpuBuild)" Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA $(CudaVersion).props" />

Просмотреть файл

@ -7,13 +7,13 @@
#include <array>
#include <random>
#include <numeric>
#include <boost/random/normal_distribution.hpp>
#include "../../../Source/Math/Matrix.h"
#include "../../../Source/Math/CPUMatrix.h"
#include "../../../Source/Math/GPUMatrix.h"
#include "../../../Source/Math/BatchNormalizationEngine.h"
#include "../../../Source/Math/CuDnnFactories.h"
#include "common.h"
#include <boost/random/normal_distribution.hpp>
namespace Microsoft { namespace MSR { namespace CNTK { namespace Test {
@ -203,92 +203,6 @@ BOOST_AUTO_TEST_CASE(BatchNormalizationForward)
}
}
//
//BOOST_AUTO_TEST_CASE(BatchNormalizationForwardInferenceCpu)
//{
// if (!IsCuDnnSupported())
// return;
//
// std::mt19937 rng(0);
// boost::random::normal_distribution<float> nd;
//
// auto initMat = [&](SingleMatrix& buf, size_t r, size_t c, vec& data) -> SingleMatrix
// {
// data.resize(r * 3 * c);
// std::fill(begin(data), end(data), std::numeric_limits<float>::quiet_NaN());
// std::generate(begin(data) + r * c, begin(data) + 2 * r * c, [&] { return nd(rng); });
// buf.SetValue(r, 3 * c, buf.GetDeviceId(), data.data());
// // Get center slice.
// return buf.ColumnSlice(c, c);
// };
//
// int deviceId = -1;
// int cudnnDeviceId = deviceId < 0 ? 0 : deviceId;
// auto fact = ConvFact::Create(cudnnDeviceId, ConvFact::EngineType::CuDnn, ImageLayoutKind::CHW);
// auto engCudnn = fact->CreateConvEngine(cudnnDeviceId, ImageLayoutKind::CHW, 0, BatchNormImpl::CuDnn);
// auto testFact = ConvFact::Create(deviceId, ConvFact::EngineType::Auto, ImageLayoutKind::CHW);
// auto engCntk = testFact->CreateConvEngine(deviceId, ImageLayoutKind::CHW, 0, BatchNormImpl::Cntk);
// for (auto& cfg : GenerateBNTestConfigs(*fact))
// {
// auto& t = *std::move(std::get<0>(cfg));
// bool spatial = std::get<1>(cfg);
//
// size_t crow = t.w() * t.h() * t.c();
// size_t ccol = t.n();
//
// vec buf(crow * t.n());
// std::generate(begin(buf), end(buf), [&] { return nd(rng); });
// SingleMatrix in(crow, ccol, buf.data(), deviceId, matrixFlagNormal);
// SingleMatrix inExp(crow, ccol, buf.data(), cudnnDeviceId, matrixFlagNormal);
//
// Tensor4DPtr scaleBiasT = spatial ? fact->CreateTensor(1, 1, t.c(), 1) : fact->CreateTensor(t.w(), t.h(), t.c(), 1);
// size_t crowScaleBias = scaleBiasT->w() * scaleBiasT->h() * scaleBiasT->c();
// buf.resize(crowScaleBias);
//
// std::generate(begin(buf), end(buf), [&] { return nd(rng); });
// SingleMatrix scale(crowScaleBias, 1, buf.data(), deviceId, matrixFlagNormal);
// SingleMatrix scaleExp(crowScaleBias, 1, buf.data(), cudnnDeviceId, matrixFlagNormal);
// std::generate(begin(buf), end(buf), [&] { return nd(rng); });
// SingleMatrix bias(crowScaleBias, 1, buf.data(), deviceId, matrixFlagNormal);
// SingleMatrix biasExp(crowScaleBias, 1, buf.data(), cudnnDeviceId, matrixFlagNormal);
//
// std::generate(begin(buf), end(buf), [&] { return nd(rng); });
// SingleMatrix runMean(crowScaleBias, 1, buf.data(), deviceId, matrixFlagNormal);
// SingleMatrix runMeanExp(crowScaleBias, 1, buf.data(), cudnnDeviceId, matrixFlagNormal);
// std::generate(begin(buf), end(buf), [&] { return nd(rng); });
// SingleMatrix runInvStdDev(crowScaleBias, 1, buf.data(), deviceId, matrixFlagNormal);
// SingleMatrix runInvStdDevExp(crowScaleBias, 1, buf.data(), cudnnDeviceId, matrixFlagNormal);
//
// SingleMatrix outBuf(deviceId);
// SingleMatrix out = initMat(outBuf, crow, ccol, buf);
// SingleMatrix outExp(crow, ccol, out.CopyToArray(), cudnnDeviceId, matrixFlagNormal);
//
// CudaTimer time1;
// time1.Start();
// engCntk->NormalizeBatchInference(t, in, *scaleBiasT, scale, bias, spatial, runMean, runInvStdDev, out);
// time1.Stop();
//
// CudaTimer time2;
// time2.Start();
// engCudnn->NormalizeBatchInference(t, inExp, *scaleBiasT, scaleExp, biasExp, spatial, runMeanExp, runInvStdDevExp, outExp);
// time2.Stop();
//
// std::stringstream tmsg;
// tmsg << "tensor: (w = " << t.w() << ", h = " << t.h() << ", c = " << t.c() << ", n = " << t.n() << ", spatial = " << (spatial ? "true" : "false") << ")";
// std::string msg = " are not equal, " + tmsg.str();
// std::string msgNan = " has NaNs, " + tmsg.str();
// std::string msgNotNan = " has buffer overflow/underflow, " + tmsg.str();
//
// float relErr = Err<float>::Rel;
// float absErr = Err<float>::Abs;
// std::string emsg;
//
// BOOST_REQUIRE_MESSAGE(!out.HasNan("out"), "out" << msgNan);
// BOOST_REQUIRE_MESSAGE(CheckEqual(out, outExp, emsg, relErr, absErr * 20), "out" << msg << ". " << emsg);
// BOOST_REQUIRE_MESSAGE(CountNans(outBuf) == crow * 2 * ccol, "out" << msgNotNan);
// }
//}
BOOST_AUTO_TEST_CASE(BatchNormalizationBackward)
{
std::mt19937 rng(0);

Просмотреть файл

@ -7,14 +7,14 @@
#include <array>
#include <random>
#include <numeric>
#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_int_distribution.hpp>
#include "../../../Source/Math/Matrix.h"
#include "../../../Source/Math/CPUMatrix.h"
#include "../../../Source/Math/GPUMatrix.h"
#include "../../../Source/Math/ConvolutionEngine.h"
#include "../../../Source/Math/CuDnnFactories.h"
#include "common.h"
#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_int_distribution.hpp>
namespace Microsoft { namespace MSR { namespace CNTK { namespace Test {
@ -226,7 +226,7 @@ BOOST_AUTO_TEST_CASE(ConvolutionForward)
std::string emsg;
BOOST_REQUIRE_MESSAGE(!out.HasNan("out"), "out" << msgNan);
BOOST_REQUIRE_MESSAGE(CheckEqual(out, outB, emsg, relErr * 4, absErr * 9), "out" << msg << ". " << emsg);
BOOST_REQUIRE_MESSAGE(CheckEqual(out, outB, emsg, relErr * 4, absErr * 10), "out" << msg << ". " << emsg);
BOOST_REQUIRE_MESSAGE(CountNans(outBuf) == crowOut * 2 * n, "out" << msgNotNan);
}
}
@ -363,7 +363,8 @@ BOOST_AUTO_TEST_CASE(ConvolutionBackwardKernel)
std::string emsg;
BOOST_REQUIRE_MESSAGE(!kernel.HasNan("kernel"), "kernel" << msgNan);
BOOST_REQUIRE_MESSAGE(CheckEqual(kernel, kernelB, emsg, relErr * 32, absErr * 32), "kernel" << msg << ". " << emsg);
// Todo: check the threashold value after we have setttings regard determinstics in place.
BOOST_REQUIRE_MESSAGE(CheckEqual(kernel, kernelB, emsg, relErr * 192, absErr * 32), "kernel" << msg << ". " << emsg);
BOOST_REQUIRE_MESSAGE(CountNans(kernelBuf) == kernel.GetNumElements() * 2, "kernel" << msgNotNan);
}
}

Просмотреть файл

@ -10,6 +10,7 @@
#include <crtdefs.h>
#endif
#include "../../../Source/Math/GPUSparseMatrix.h"
#include "common.h"
using namespace Microsoft::MSR::CNTK;
@ -55,10 +56,11 @@ BOOST_FIXTURE_TEST_CASE(GPUSparseMatrixScaleAndAdd, RandomSeedFixture)
float a[m * n];
float b[m * n];
std::mt19937 rng(0);
for (int i = 0; i < m * n; i++)
{
a[i] = static_cast<float>(rand());
b[i] = static_cast<float>(rand());
a[i] = static_cast<float>(rng());
b[i] = static_cast<float>(rng());
}
const GPUMatrix<float> denseMatrixA(m, n, c_deviceIdZero, a, MatrixFlags::matrixFlagNormal);
@ -80,7 +82,11 @@ BOOST_FIXTURE_TEST_CASE(GPUSparseMatrixScaleAndAdd, RandomSeedFixture)
unique_ptr<float[]> c(denseMatrixC.CopyToArray());
for (int i = 0; i < m * n; i++)
{
BOOST_CHECK_EQUAL(alpha * (alpha * a[i] + beta * b[i]), c[i]);
float res1 = alpha * (alpha * a[i] + beta * b[i]);
float res2 = c[i];
BOOST_REQUIRE_MESSAGE(AreEqual(res1, res2, Err<float>::Rel, Err<float>::Abs),
"first mismatch at " << i << ", " << res1 << "!=" << res2 << ", relErr=" << (std::abs(res1 - res2) / std::max(std::abs(res1), \
std::abs(res2))) << ", absErr = " << std::abs(res1 - res2));
}
}

Просмотреть файл

@ -40,18 +40,6 @@
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Choose>
<When Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">
<PropertyGroup>
<HasBoost>true</HasBoost>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<HasBoost>false</HasBoost>
</PropertyGroup>
</Otherwise>
</Choose>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Condition="$(GpuBuild)" Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA $(CudaVersion).props" />

Просмотреть файл

@ -121,7 +121,8 @@ BOOST_FIXTURE_TEST_CASE(MatrixMultiplyAndPlusAndMinus, RandomSeedFixture)
BOOST_FIXTURE_TEST_CASE(MatrixScaleAndAdd, RandomSeedFixture)
{
const int seed = rand();
std::mt19937 rng(0);
const int seed = rng();
const SingleMatrix singleMatrixA = SingleMatrix::RandomUniform(1024, 512, c_deviceIdZero , - 12.34f, 55.2312f, seed + 0);
const SingleMatrix singleMatrixB = SingleMatrix::RandomUniform(1024, 512, c_deviceIdZero, -12.34f, 55.2312f, seed + 1);
SingleMatrix singleMatrixC(singleMatrixB.DeepClone());
@ -161,7 +162,8 @@ BOOST_FIXTURE_TEST_CASE(MatrixScaleAndAdd, RandomSeedFixture)
BOOST_FIXTURE_TEST_CASE(MatrixScaleAndAdd_double, RandomSeedFixture)
{
const int seed = rand();
std::mt19937 rng(0);
const int seed = rng();
DoubleMatrix matrixA = DoubleMatrix::RandomUniform(1024, 512, c_deviceIdZero, -12.34, 55.2312, seed + 0);
DoubleMatrix matrixB = DoubleMatrix::RandomUniform(1024, 512, c_deviceIdZero, -12.34, 55.2312, seed + 1);
DoubleMatrix matrixC(matrixB.DeepClone());

Просмотреть файл

@ -5,6 +5,7 @@
// Tests for sparse and dense matrix interaction should go here
//
#include "stdafx.h"
#include <random>
#include "../../../Source/Math/Matrix.h"
using namespace Microsoft::MSR::CNTK;
@ -191,6 +192,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixSparseTimesSparse, RandomSeedFixture)
BOOST_FIXTURE_TEST_CASE(MatrixSparsePlusSparse, RandomSeedFixture)
{
std::mt19937 rng(0);
Matrix<float> mAdense(c_deviceIdZero);
mAdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -3.0f, 0.1f, IncrementCounter()), 0);
Matrix<float> mAsparse(mAdense.DeepClone());
@ -199,7 +201,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixSparsePlusSparse, RandomSeedFixture)
mBdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -5.0f, 0.4f, IncrementCounter()), 0);
Matrix<float> mBsparse(mBdense.DeepClone());
float alpha = 1.0f * rand() / RAND_MAX;
float alpha = 1.0f * rng() / rng.max();
Matrix<float>::ScaleAndAdd(alpha, mAdense, mBdense);
mAsparse.SwitchToMatrixType(MatrixType::SPARSE, matrixFormatSparseCSR, true);
@ -212,6 +214,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixSparsePlusSparse, RandomSeedFixture)
BOOST_FIXTURE_TEST_CASE(MatrixDensePlusSparse, RandomSeedFixture)
{
std::mt19937 rng(0);
Matrix<float> mAdense(c_deviceIdZero);
mAdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -3.0f, 0.1f, IncrementCounter()), 0);
@ -219,7 +222,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixDensePlusSparse, RandomSeedFixture)
mBdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -5.0f, 0.4f, IncrementCounter()), 0);
Matrix<float> mBsparse(mBdense.DeepClone());
float alpha = 1.0f * rand() / RAND_MAX;
float alpha = 1.0f * rng() / rng.max();
Matrix<float>::ScaleAndAdd(alpha, mAdense, mBdense);
mBsparse.SwitchToMatrixType(MatrixType::SPARSE, matrixFormatSparseCSR, true);
@ -231,6 +234,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixDensePlusSparse, RandomSeedFixture)
BOOST_FIXTURE_TEST_CASE(MatrixSparsePlusDense, RandomSeedFixture)
{
std::mt19937 rng(0);
Matrix<float> mAdense(c_deviceIdZero);
mAdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -3.0f, 0.1f, IncrementCounter()), 0);
Matrix<float> mAsparse(mAdense.DeepClone());
@ -239,7 +243,7 @@ BOOST_FIXTURE_TEST_CASE(MatrixSparsePlusDense, RandomSeedFixture)
mBdense.AssignTruncateBottomOf(Matrix<float>::RandomUniform(dim1, dim2, c_deviceIdZero, -5.0f, 0.4f, IncrementCounter()), 0);
Matrix<float> Bd1(mBdense.DeepClone());
float alpha = 1.0f * rand() / RAND_MAX;
float alpha = 1.0f * rng() / rng.max();
Matrix<float>::ScaleAndAdd(alpha, mAdense, mBdense);
mAsparse.SwitchToMatrixType(MatrixType::SPARSE, matrixFormatSparseCSR, true);

Просмотреть файл

@ -5,15 +5,15 @@
#pragma once
#include "Matrix.h"
#include "CPUMatrix.h"
#include "TensorView.h"
#include "Sequences.h"
#include <chrono>
#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/random/uniform_real_distribution.hpp>
#include "Matrix.h"
#include "CPUMatrix.h"
#include "TensorView.h"
#include "Sequences.h"
namespace Microsoft { namespace MSR { namespace CNTK { namespace Test {
@ -50,7 +50,7 @@ struct TensorTest
cout << " \t// " << (deviceId < 0 ? "C" : "G") << "PU\n " << flush;
// random init
mt19937 rng(randomSeed);
std::mt19937 rng(randomSeed);
boost::random::uniform_real_distribution<float> nd(-1, 1);
vector<ElemType> init(numElements);
generate(begin(init), end(init), [&] { return nd(rng); });

Просмотреть файл

@ -26,10 +26,6 @@
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\CNTK.Cpp.props" />
<PropertyGroup>
<HasBoost>false</HasBoost>
<HasBoost Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">true</HasBoost>
</PropertyGroup>
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>

Просмотреть файл

@ -5,14 +5,14 @@
#pragma once
#include <boost/test/unit_test.hpp>
#include "boost/filesystem.hpp"
#include "boost/lexical_cast.hpp"
#include <boost/filesystem.hpp>
#include <boost/lexical_cast.hpp>
#include "DataReader.h"
using namespace Microsoft::MSR::CNTK;
namespace Microsoft { namespace MSR { namespace CNTK { namespace Test {
const double relError = 1e-5f;
struct ReaderFixture
{
// This fixture sets up paths so the tests can assume the right location for finding the configuration
@ -115,8 +115,6 @@ struct ReaderFixture
string m_testDataPath;
string m_parentPath;
double relError = 1e-5f;
string initialPath()
{
return m_initialWorkingPath;
@ -184,14 +182,14 @@ struct ReaderFixture
{
for (it1 = beginStream1, it2 = beginStream2; it1 != endStream1 && it2 != endStream2; it1++, it2++)
{
BOOST_CHECK_CLOSE_FRACTION(boost::lexical_cast<double>(*it1), boost::lexical_cast<double>(*it2), relError);
BOOST_REQUIRE_CLOSE_FRACTION(boost::lexical_cast<double>(*it1), boost::lexical_cast<double>(*it2), relError);
}
BOOST_CHECK_MESSAGE(it1 == endStream1 && it2 == endStream2, "Different number of elements in file " << filename1 << " and " << filename2);
BOOST_REQUIRE_MESSAGE(it1 == endStream1 && it2 == endStream2, "Different number of elements in file " << filename1 << " and " << filename2);
}
else
{
BOOST_CHECK_EQUAL_COLLECTIONS(beginStream1, endStream1, beginStream2, endStream2);
BOOST_REQUIRE_EQUAL_COLLECTIONS(beginStream1, endStream1, beginStream2, endStream2);
}
}

Просмотреть файл

@ -8,8 +8,9 @@ precision = "double"
Simple_Test = [
reader = [
useMersenneTwisterRand = true
readerType = "HTKMLFReader"
readMethod = "rollingWindow"
readMethod = "blockRandomize"
miniBatchMode = "full"
randomize = "auto"
verbosity = 0

Просмотреть файл

@ -1,32 +0,0 @@
RootDir = .
DataDir = $RootDir$
# deviceId = -1 for CPU, >= 0 for GPU devices
deviceId = -1
precision = "double"
Simple_Test = [
reader = [
readerType = "HTKMLFReader"
readMethod = "rollingWindow"
miniBatchMode = "full"
randomize = "auto"
verbosity = 0
frameMode = true
truncated = true
features = [
dim = 363
type = "real"
scpFile = "$DataDir$/glob_0000.scp"
]
labels = [
mlfFile = "$DataDir$/glob_0000.mlf"
labelMappingFile = "$DataDir$/state.list"
labelDim = 132
labelType = "category"
]
]
]

Просмотреть файл

@ -1,32 +0,0 @@
RootDir = .
DataDir = $RootDir$
# deviceId = -1 for CPU, >= 0 for GPU devices
deviceId = -1
precision = "float"
Simple_Test = [
reader = [
readerType = "HTKMLFReader"
readMethod = "rollingWindow"
miniBatchMode = "full"
randomize = "auto"
verbosity = 0
frameMode = true
truncated = false
features = [
dim = 363
type = "real"
scpFile = "$DataDir$/glob_0000.scp"
]
labels=[
mlfFile = "$DataDir$/glob_0000.mlf"
labelMappingFile = "$DataDir$/state.list"
labelDim = 132
labelType = "category"
]
]
]

Просмотреть файл

@ -8,8 +8,9 @@ precision = "float"
Simple_Test = [
reader = [
useMersenneTwisterRand = true
readerType = "HTKMLFReader"
readMethod = "rollingWindow"
readMethod = "blockRandomize"
miniBatchMode = "full"
randomize = "auto"
verbosity = 0

Просмотреть файл

@ -19,7 +19,6 @@ Simple_Test = [
reader = [
verbosity = 0
randomize = true
numCPUThreads = 1
deserializers = (
[

Просмотреть файл

@ -19,7 +19,6 @@ Simple_Test = [
reader = [
verbosity = 0
randomize = true
numCPUThreads = 1
deserializers = (
[

Просмотреть файл

@ -1,42 +0,0 @@
RootDir = .
ModelDir = "models"
command = "Simple_Test"
precision = "float"
modelPath = "$ModelDir$/UCIFastReaderSimpleDataLoop_Model.dnn"
# deviceId = -1 for CPU, >= 0 for GPU devices
deviceId = -1
outputNodeNames = "ScaledLogLikelihood"
traceLevel = 1
#######################################
# CONFIG (Simple, Fixed LR) #
#######################################
Simple_Test = [
# Parameter values for the reader
reader = [
# reader to use
readerType = "UCIFastReader"
file = "$RootDir$/UCIFastReaderSimpleDataLoop_Train.txt"
miniBatchMode = "partial"
randomize = "auto"
verbosity = 1
features = [
dim = 2 # two-dimensional input data
start = 0 # Start with first element on line
]
labels = [
start = 2 # Skip two elements
dim = 1 # One label dimension
labelDim = 2 # Two labels possible
labelMappingFile = "$RootDir$/UCIFastReaderSimpleDataLoop_Mapping.txt"
]
]
]

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,2 +1,2 @@
images\black.jpg 0
images\multi.png 1
images/black.jpg 0
images/multi.png 1

Просмотреть файл

@ -1,2 +0,0 @@
0
1

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -49,7 +49,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop1)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop2)
@ -117,23 +122,6 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop5)
1,
1,
0,
1);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop6)
{
HelperRunReaderTest<float>(
testDataPath() + "/Config/HTKMLFReaderSimpleDataLoop6_Config.cntk",
testDataPath() + "/Control/HTKMLFReaderSimpleDataLoop6_16_17_Control.txt",
testDataPath() + "/Control/HTKMLFReaderSimpleDataLoop6_Output.txt",
"Simple_Test",
"reader",
500,
250,
2,
1,
1,
0,
1,
false,
false,
@ -150,7 +138,6 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop7)
"reader");
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop8)
{
HelperRunReaderTest<float>(
@ -182,7 +169,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop10)
2,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop11)
@ -199,7 +191,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop11)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop12)
@ -311,7 +308,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop20)
2,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop21_0)
@ -345,7 +347,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop21_1)
1,
1,
1,
2);
2,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop22)
@ -362,7 +369,12 @@ BOOST_AUTO_TEST_CASE(HTKMLFReaderSimpleDataLoop22)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop1)
@ -379,7 +391,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop1)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop5)
@ -396,7 +413,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop5)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop11)
@ -413,7 +435,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop11)
1,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop21_0)
@ -447,7 +474,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop21_1)
1,
1,
1,
2);
2,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop4)
@ -581,7 +613,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop10)
2,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop20)
@ -598,7 +635,12 @@ BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop20)
2,
1,
0,
1);
1,
false,
false,
true,
{},
true);
};
BOOST_AUTO_TEST_CASE(HTKDeserializersSimpleDataLoop3)

Просмотреть файл

@ -4,16 +4,14 @@
//
#include "stdafx.h"
#include <numeric>
#include <random>
#include <boost/random/uniform_int_distribution.hpp>
#include "NoRandomizer.h"
#include "DataDeserializer.h"
#include "BlockRandomizer.h"
#include "CorpusDescriptor.h"
#include <numeric>
#include <random>
#include <boost/random/uniform_int_distribution.hpp>
using namespace Microsoft::MSR::CNTK;
using namespace std;
@ -306,7 +304,7 @@ void BlockRandomizerChaosMonkeyTest(bool prefetch)
const int windowSize = 18;
vector<float> data(numChunks * numSequencesPerChunk);
iota(data.begin(), data.end(), 0.0f);
mt19937 rng(seed);
std::mt19937 rng(seed);
boost::random::uniform_int_distribution<int> distr(1, 10);
auto mockDeserializer = make_shared<MockDeserializer>(numChunks, numSequencesPerChunk, data, sequenceLength);
@ -444,7 +442,7 @@ BOOST_AUTO_TEST_CASE(NoRandomizerOneEpoch)
BOOST_AUTO_TEST_CASE(DefaultCorpusDescriptor)
{
const int seed = 13;
mt19937 rng(seed);
std::mt19937 rng(seed);
boost::random::uniform_int_distribution<int> distr(50, 60);
string randomKey(10, (char)distr(rng));

Просмотреть файл

@ -27,8 +27,6 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\CNTK.Cpp.props" />
<PropertyGroup>
<HasBoost>false</HasBoost>
<HasBoost Condition="Exists('$(BOOST_INCLUDE_PATH)') And Exists('$(BOOST_LIB_PATH)')">true</HasBoost>
<ImageReaderDefine Condition="$(HasOpenCv)">ENABLE_IMAGEREADER_TESTS</ImageReaderDefine>
</PropertyGroup>
<PropertyGroup Label="Configuration">
@ -115,7 +113,6 @@
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="UCIFastReaderTests.cpp" />
<ClCompile Include="..\..\..\Source\Readers\CNTKTextFormatReader\Indexer.cpp" />
<ClCompile Include="..\..\..\Source\Readers\CNTKTextFormatReader\TextParser.cpp" />
</ItemGroup>

Просмотреть файл

@ -10,7 +10,6 @@
<ItemGroup>
<ClCompile Include="stdafx.cpp" />
<ClCompile Include="HTKLMFReaderTests.cpp" />
<ClCompile Include="UCIFastReaderTests.cpp" />
<ClCompile Include="ReaderLibTests.cpp" />
<ClCompile Include="ImageReaderTests.cpp" />
<ClCompile Include="CNTKTextFormatReaderTests.cpp" />

Просмотреть файл

@ -1,41 +0,0 @@
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//
#include "stdafx.h"
#include "Common/ReaderTestHelper.h"
using namespace Microsoft::MSR::CNTK;
namespace Microsoft { namespace MSR { namespace CNTK { namespace Test {
struct UCIReaderFixture : ReaderFixture
{
UCIReaderFixture()
: ReaderFixture("/Data")
{
}
};
BOOST_FIXTURE_TEST_SUITE(ReaderTestSuite, UCIReaderFixture)
BOOST_AUTO_TEST_CASE(UCIFastReaderSimpleDataLoop)
{
HelperRunReaderTest<float>(
testDataPath() + "/Config/UCIFastReaderSimpleDataLoop_Config.cntk",
testDataPath() + "/Control/UCIFastReaderSimpleDataLoop_Control.txt",
testDataPath() + "/Control/UCIFastReaderSimpleDataLoop_Output.txt",
"Simple_Test",
"reader",
500,
250,
2,
1,
1,
0,
1);
};
BOOST_AUTO_TEST_SUITE_END()
} } } }

2
configure поставляемый
Просмотреть файл

@ -684,7 +684,7 @@ then
if test x$boost_path = x
then
echo Cannot locate Boost libraries
echo Unit tests will NOT be built.
echo ImageReader and Unit tests will NOT be built.
else
echo Found Boost at $boost_path
fi