// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.md file in the project root for full license information. // #pragma once #include "stdafx.h" #include "CNTKLibrary.h" #include namespace CNTK { namespace Internal { FunctionPtr LoadLegacyModel(const std::wstring& modelFile, const DeviceDescriptor& computeDevice); void SaveAsLegacyModel(const FunctionPtr& rootFunction, const std::wstring& modelFile); inline bool IsLegacyModel(std::fstream& stream) { static const char legacyMarker[] = { 0x42, 0x00, 0x43, 0x00, 0x4e, 0x00, 0x00, 0x00 }; // L"BCN" static const auto size = sizeof(legacyMarker); char buffer[size]; const auto position = stream.tellg(); stream.read(buffer, size); stream.seekg(position); return (strcmp(legacyMarker, buffer) == 0); } enum class LegacyModelDataType : unsigned int { Auto, // starting from model version 7, type is encoded into the model file and need not be explicitly specified Float, Double }; LegacyModelDataType DetectLegacyModelDataType(const std::wstring& modelFile); } }