{"id":273420,"date":"2016-02-02T14:17:02","date_gmt":"2016-02-02T11:17:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=273420"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=273420","title":{"rendered":"\u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0435\u0449\u0451 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u043b\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442?\u00bb \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f CNTK \u043e\u0442 Microsoft Research"},"content":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/28d\/8ca\/299\/28d8ca299b2cea0c702798c5e349aa68.png\" align=\"left\"\/>Microsoft \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0430 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430: \u043d\u0430\u0431\u043e\u0440 Computational Network Toolkit \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 Github. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  <a href=\"https:\/\/github.com\/Microsoft\/CNTK\">Computational Network Toolkit<\/a> (CNTK) \u2014 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0435\u0442\u0435\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0435\u0447\u0438, \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/pvs-studio\/\">PVS-Studio<\/a> \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 \u0421, C++ \u0438 C#. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 PVS-Studio \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0440\u0435\u0434\u044b Visual Studio 2010-2015.<\/p>\n<p>  \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044e \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e <a href=\"http:\/\/www.viva64.com\/ru\/a\/0084\/\">\u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>, \u043c\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0432 \u043d\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u043a\u043b\u044e\u0447 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0418 \u044d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e. \u041a\u043e\u0434 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 Microsoft \u043e\u0447\u0435\u043d\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438 \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0443\u0431\u0435\u0436\u0434\u0430\u043b\u0438\u0441\u044c \u0432 \u044d\u0442\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442. \u041d\u043e <a href=\"https:\/\/www.google.ru\/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwiDrtz_hc3KAhVFnnIKHaVqAg4QFggfMAA&amp;amp;url=http%3A%2F%2Fwww.viva64.com%2Fru%2Fb%2F0105%2F&amp;amp;usg=AFQjCNG575-0w6RsV7-cY0UI9u40xxKnFg&amp;amp;sig2=CVvmfOOUqiJSPLR-6P6PBA\">\u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c<\/a>, \u0447\u0442\u043e \u0441\u043c\u044b\u0441\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445, \u0430 \u043d\u0435 \u0432 \u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u00ab\u043a\u0430\u0432\u0430\u043b\u0435\u0440\u0438\u0439\u0441\u043a\u0438\u0445 \u043d\u0430\u0441\u043a\u043e\u043a\u0430\u0445\u00bb.<\/p>\n<h2>\u042d\u0445, \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438<\/h2>\n<p>  \u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u2014 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435 \u0442\u0435\u043a\u0441\u0442\u0430. \u041e\u043d\u0438 \u043f\u0440\u043e\u043d\u0438\u043a\u043b\u0438 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, \u043a\u043d\u0438\u0433\u0438, \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0432\u0438\u0434\u0435\u043d\u0438\u0435. \u0412 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u0445, \u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u044d\u0442\u0438\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1a0\/180\/95d\/1a018095deeb03b24f5452b33beaa5d7.png\" \/><\/div>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0090\/\">V501<\/a> There are identical sub-expressions &#8216;!Input(0)-&gt;HasMBLayout()&#8217; to the left and to the right of the &#8216;||&#8217; operator. trainingnodes.h 1416  <\/p>\n<pre><code class=\"cpp\">virtual void Validate(bool isFinalValidationPass) override {   ....   if (isFinalValidationPass &amp;&amp;       !(Input(0)-&gt;GetSampleMatrixNumRows() ==         Input(2)-&gt;GetSampleMatrixNumRows() &amp;&amp;        (Input(0)-&gt;GetMBLayout() ==         Input(2)-&gt;GetMBLayout() ||        !Input(0)-&gt;HasMBLayout() ||            \/\/ &lt;=        !Input(0)-&gt;HasMBLayout())))            \/\/ &lt;=   {     LogicError(..., NodeName().c_str(),OperationName().c_str());   }    .... }<\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438. \u0422\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u0447\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 &quot;!Input(0)-&gt;HasMBLayout()&quot;. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c &#8216;2&#8217;.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0090\/\">V501<\/a> There are identical sub-expressions to the left and to the right of the &#8216;-&#8216; operator: i0 \u2014 i0 ssematrix.h 564  <\/p>\n<pre><code class=\"cpp\">void assignpatch(const ssematrixbase &amp;patch,                  const size_t i0,                  const size_t i1,                  const size_t j0,                  const size_t j1) {   ....   for (size_t j = j0; j &lt; j1; j++)   {     const float *pcol = &amp;patch(i0 - i0, j - j0);      \/\/ &lt;=     float *qcol = &amp;us(i0, j);     const size_t colbytes = (i1 - i0) * sizeof(*pcol);     memcpy(qcol, pcol, colbytes);   }   .... }<\/code><\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u00abi0-i0\u00bb \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0443\u0442 \u0445\u043e\u0442\u0435\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u00abi1-i0\u00bb \u0438\u043b\u0438 \u00abj \u2014 i1\u00bb, \u0438\u043b\u0438 \u0435\u0449\u0451 \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0206\/\">V596<\/a> The object was created but it is not being used. The &#8216;throw&#8217; keyword could be missing: throw runtime_error(FOO); simplenetworkbuilder.cpp 1578  <\/p>\n<pre><code class=\"cpp\">template &lt;class ElemType&gt; ComputationNetworkPtr SimpleNetworkBuilder&lt;ElemType&gt;::   BuildNetworkFromDbnFile(const std::wstring&amp; dbnModelFileName) {   ....   if (this-&gt;m_outputLayerSize &gt;= 0)     outputLayerSize = this-&gt;m_outputLayerSize;   else if (m_layerSizes.size() &gt; 0)     m_layerSizes[m_layerSizes.size() - 1];   else     std::runtime_error(&quot;Output layer size must be...&quot;);     \/\/ &lt;=   .... }<\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e &#8216;throw&#8217;. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">.... else   throw std::runtime_error(&quot;Output layer size must be...&quot;); ....<\/code><\/pre>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ff7\/573\/a4d\/ff7573a4d36af40c6ebe27e2ef4017c2.png\" \/><\/div>\n<p>  V739 EOF should not be compared with a value of the &#8216;char&#8217; type. The &#8216;c&#8217; should be of the &#8216;int&#8217; type. fileutil.cpp 852  <\/p>\n<pre><code class=\"cpp\">string fgetstring(FILE* f) {   string res;   for (;;)   {     char c = (char) fgetc(f);        \/\/ &lt;=     if (c == EOF)                    \/\/ &lt;=       RuntimeError(&quot;error reading .... 0: %s&quot;, strerror(errno));     if (c == 0)       break;     res.push_back(c);   }   return res; }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 EOF \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0438\u043f\u0430 &#8216;char&#8217;. \u042d\u0442\u043e \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043d\u0435\u0432\u0435\u0440\u043d\u043e.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d EOF:  <\/p>\n<pre><code class=\"cpp\">#define EOF (-1)<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, EOF \u0435\u0441\u0442\u044c \u043d\u0438 \u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043a\u0430\u043a &#8216;-1&#8217; \u0442\u0438\u043f\u0430 &#8216;int&#8217;. \u0424\u0443\u043d\u043a\u0446\u0438\u044f fgetc () \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 &#8216;int&#8217;. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043e\u0442 0 \u0434\u043e 255 \u0438\u043b\u0438 -1 (EOF). \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 &#8216;char&#8217;. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 0xFF (255) \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 -1 \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 (EOF). <\/p>\n<p>  \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Extended_ASCII\">Extended ASCII Codes<\/a>, \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0445 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0431\u0443\u043a\u0432\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows-1251\">Windows-1251<\/a> \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u0434 0xFF \u0438 \u0432\u043e\u0441\u043f\u0440\u0438\u043c\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">int c = fgetc(f); if (c == EOF)   RuntimeError(....);<\/code><\/pre>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0137\/\">V547<\/a> Expression &#8216;val[0] == 0xEF&#8217; is always false. The value range of char type: [-128, 127]. file.cpp 462  <\/p>\n<pre><code class=\"cpp\">bool File::IsUnicodeBOM(bool skip) {   ....   else if (m_options &amp; fileOptionsText)   {     char val[3];     file.ReadString(val, 3);     found = (val[0] == 0xEF &amp;&amp; val[1] == 0xBB &amp;&amp; val[2] == 0xBF);   }   \/\/ restore pointer if no BOM or we aren't skipping it   if (!found || !skip)   {     SetPosition(pos);   }   .... }<\/code><\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0438\u043f &#8216;char&#8217; \u0438\u043c\u0435\u0435\u0442 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0440\u0430\u0432\u043d\u044b\u0439 [-127;127]. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043b\u0430\u0433\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \/J \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d [0;255]. \u041d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u043b\u0430\u0433 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Byte_order_mark\">BOM<\/a>.<\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0c8\/bc2\/59b\/0c8bc259b1967ab32d15980d26f7228a.png\" \/><\/div>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0205\/\">V595<\/a> The &#8216;m_rowIndices&#8217; pointer was utilized before it was verified against nullptr. Check lines: 171, 175. libsvmbinaryreader.cpp 171  <\/p>\n<pre><code class=\"cpp\">template &lt;class ElemType&gt; void SparseBinaryMatrix&lt;ElemType&gt;::ResizeArrays(size_t newNNz) {   ....   if (m_nnz &gt; 0)   {     memcpy(rowIndices, m_rowIndices, sizeof(int32_t)....);  \/\/ &lt;=     memcpy(values, this-&gt;m_values, sizeof(ElemType)....);   \/\/ &lt;=   }    if (m_rowIndices != nullptr)   {     \/\/ free(m_rowIndices);     CUDAPageLockedMemAllocator::Free(this-&gt;m_rowIndices, ....);   }   if (this-&gt;m_values != nullptr)   {     \/\/ free(this-&gt;m_values);     CUDAPageLockedMemAllocator::Free(this-&gt;m_values, ....);   }   .... }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441 \u043d\u0443\u043b\u0451\u043c, \u043d\u043e \u0432\u044b\u0448\u0435 \u043f\u043e \u043a\u043e\u0434\u0443 \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043e\u043f\u0430\u0441\u043d\u044b\u043c.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 memcpy() \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442 \u0431\u0430\u0439\u0442\u044b, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c &#8216;m_rowIndices&#8217; \u0438 &#8216;m_values&#8217;, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0430 \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u0434\u0430 \u043e\u043d\u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0099\/\">V510<\/a> The &#8216;sprintf_s&#8217; function is not expected to receive class-type variable as third actual argument. binaryfile.cpp 501  <\/p>\n<pre><code class=\"cpp\">const std::wstring&amp; GetName() {   return m_name; }  Section* Section::ReadSection(....) {   ....   char message[256];   sprintf_s(message,&quot;Invalid header in file %ls, in header %s\\n&quot;,               m_file-&gt;GetName(), section-&gt;GetName());       \/\/ &lt;=   RuntimeError(message);   .... }<\/code><\/pre>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 sprint_s() \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e POD \u0442\u0438\u043f\u044b. POD \u2014 \u044d\u0442\u043e \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043e\u0442 \u00abPlain Old Data\u00bb, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u043a \u00ab\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0438\u043b\u0435 \u0421\u0438\u00bb.<\/p>\n<p>  \u00abstd::wstring\u00bb \u043a POD-\u0442\u0438\u043f\u0430\u043c \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f. \u0412\u043c\u0435\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0441\u0442\u0435\u043a \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u00ab\u0430\u0431\u0440\u0430\u043a\u0430\u0434\u0430\u0431\u0440\u044b\u00bb \u0438\u043b\u0438 \u043a \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u043c\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:  <\/p>\n<pre><code class=\"cpp\">sprintf_s(message,&quot;Invalid header in file %ls, in header %s\\n&quot;,           m_file-&gt;GetName().c_str(), section-&gt;GetName().c_str());<\/code><\/pre>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0247\/\">V630<\/a> The &#8216;malloc&#8217; function is used to allocate memory for an array of objects which are classes containing constructors. latticeforwardbackward.cpp 912  <\/p>\n<pre><code class=\"cpp\">void lattice::forwardbackwardalign() {   ....   aligninfo *refinfo;   unsigned short *refalign;    refinfo = (aligninfo *) malloc(sizeof(aligninfo) * 1);    \/\/ &lt;=   refalign = (unsigned short *) malloc(sizeof(....) * framenum);    array_ref&lt;aligninfo&gt; refunits(refinfo, 1);   array_ref&lt;unsigned short&gt; refedgealignmentsj(....);   .... }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0442\u0438\u043f\u0430 \u00abaligninfo\u00bb. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b, \u0430 \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440. \u041f\u0440\u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 free() \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043a\u043e\u0434 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u00abaligninfo\u00bb:  <\/p>\n<pre><code class=\"cpp\">struct aligninfo \/\/ phonetic alignment {   unsigned int unit : 19;   \/\/ triphone index   unsigned int frames : 11; \/\/ duration in frames   unsigned int unused : 1; \/\/ (for future use)   unsigned int last : 1;   \/\/ set for last entry   aligninfo(size_t punit, size_t pframes)       : unit((unsigned int) punit),         frames((unsigned int) pframes), unused(0), last(0)   {     checkoverflow(unit, punit, &quot;aligninfo::unit&quot;);     checkoverflow(frames, pframes, &quot;aligninfo::frames&quot;);   }   aligninfo() \/\/ [v-hansu] initialize to impossible values   { #ifdef INITIAL_STRANGE     unit = unsigned int(-1);     frames = unsigned int(-1);     unused = unsigned int(-1);     last = unsigned int(-1); #endif   }   template &lt;class IDMAP&gt;   void updateunit(const IDMAP&amp; idmap \/*[unit] -&gt; new unit*\/)   {     const size_t mappedunit = idmap[unit];     unit = (unsigned int) mappedunit;     checkoverflow(unit, mappedunit, &quot;aligninfo::unit&quot;);   } };<\/code><\/pre>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:  <\/p>\n<pre><code class=\"cpp\">aligninfo *refinfo = new aligninfo();<\/code><\/pre>\n<p>  \u0418 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;delete&#8217;.<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0210\/\">V599<\/a> The virtual destructor is not present, although the &#8216;IDataWriter&#8217; class contains virtual functions. datawriter.cpp 47  <\/p>\n<pre><code class=\"cpp\">IDataWriter&lt;ElemType&gt;* m_dataWriter; .... template &lt;class ElemType&gt; void DataWriter&lt;ElemType&gt;::Destroy() {     delete m_dataWriter; \/\/ &lt;= V599 warning     m_dataWriter = NULL; }<\/code><\/pre>\n<p>  \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0443 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0440\u0430\u0437\u0440\u0443\u0448\u0430\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u0432\u043b\u0435\u0447\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0443\u0442\u0435\u0447\u043a\u0430\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043d\u0435\u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.  <\/p>\n<pre><code class=\"cpp\">template &lt;class ElemType&gt; class DATAWRITER_API IDataWriter { public:     typedef std::string LabelType;     typedef unsigned int LabelIdType;      virtual void Init(....) = 0;     virtual void Init(....) = 0;     virtual void Destroy() = 0;     virtual void GetSections(....) = 0;     virtual bool SaveData(....) = 0;     virtual void SaveMapping(....) = 0; };<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u2014 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.  <\/p>\n<pre><code class=\"cpp\">m_dataWriter = new HTKMLFWriter&lt;ElemType&gt;();<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u00abHTKMLFWriter\u00bb. \u041d\u0430\u0439\u0434\u0451\u043c \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">template &lt;class ElemType&gt; class HTKMLFWriter : public IDataWriter&lt;ElemType&gt; { private:     std::vector&lt;size_t&gt; outputDims;     std::vector&lt;std::vector&lt;std::wstring&gt;&gt; outputFiles;      std::vector&lt;size_t&gt; udims;     std::map&lt;std::wstring, size_t&gt; outputNameToIdMap;     std::map&lt;std::wstring, size_t&gt; outputNameToDimMap;     std::map&lt;std::wstring, size_t&gt; outputNameToTypeMap;     unsigned int sampPeriod;     size_t outputFileIndex;     void Save(std::wstring&amp; outputFile, ....);     ElemType* m_tempArray;     size_t m_tempArraySize;     .... };<\/code><\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d. \u041d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 outputDims, outputFiles \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0435\u0434\u044c \u00ab\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u00bb \u043d\u0435 \u0437\u0440\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<h2>\u0420\u0430\u0437\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/15b\/3a6\/062\/15b3a60629977ad5fb4ace92c768a7bb.png\" \/><\/div>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0091\/\">V502<\/a> Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;|&#8217; operator. sequenceparser.h 338  <\/p>\n<pre><code class=\"cpp\">enum SequenceFlags {     seqFlagNull = 0,     seqFlagLineBreak = 1, \/\/ line break on the parsed line     seqFlagEmptyLine = 2, \/\/ empty line     seqFlagStartLabel = 4,     seqFlagStopLabel = 8 };  long Parse(....) {   ....   \/\/ sequence state machine variables   bool m_beginSequence;   bool m_endSequence;   ....   if (seqPos)   {     SequencePosition sequencePos(numbers-&gt;size(), labels-&gt;size(),       m_beginSequence ? seqFlagStartLabel : 0 | m_endSequence ?       seqFlagStopLabel : 0 | seqFlagLineBreak);     \/\/ add a sequence element to the list     seqPos-&gt;push_back(sequencePos);     sequencePositionLast = sequencePos;   }      \/\/ end of sequence determines record separation   if (m_endSequence)       recordCount = (long) labels-&gt;size();   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;:?&#8217; \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0418\u041b\u0418 &#8216;|&#8217;. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e:  <\/p>\n<pre><code class=\"cpp\">0 | m_endSequence ? seqFlagStopLabel : 0 | seqFlagLineBreak<\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0444\u043b\u0430\u0433\u0430\u043c\u0438, \u043d\u043e \u0438\u0437-\u0437\u0430 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0441\u044f \u00ab0 | m_endSequence\u00bb, \u0430 \u043d\u0435 \u00abm_endSequence? seqFlagStopLabel: 0 | seqFlagLineBreak\u00bb.<\/p>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041f\u043e\u0431\u0438\u0442\u043e\u0435 \u0418\u041b\u0418 \u0441 0 \u043d\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043e\u0448\u0438\u0431\u043a\u0443 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>  \u0415\u0449\u0451 \u0434\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<ul>\n<li>V502 Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;|&#8217; operator. sequenceparser.h 433<\/li>\n<li>V502 Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;|&#8217; operator. sequenceparser.h 598<\/li>\n<\/ul>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0119\/\">V530<\/a> The return value of function &#8216;size&#8217; is required to be utilized. basics.h 428  <\/p>\n<pre><code class=\"cpp\">\/\/ TODO: merge this with todouble(const char*) above static inline double todouble(const std::string&amp; s) {   s.size(); \/\/ just used to remove the unreferenced warning    double value = 0.0;   .... }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u043e \u0447\u0451\u043c \u043d\u0430\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u043f\u0440\u0438\u0432\u0451\u043b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u043b\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0435\u0441\u0442\u044c UNREFERENCED_PARAMETER macro, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0434\u0430\u0451\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e:  <\/p>\n<pre><code class=\"cpp\">#define UNREFERENCED_PARAMETER(P) (P)  static inline double todouble(const std::string&amp; s) {   UNREFERENCED_PARAMETER(s);   .... }<\/code><\/pre>\n<p>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0434\u0432\u0435\u0441\u0442\u0438 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0119\/\">V530<\/a> The return value of function &#8217;empty&#8217; is required to be utilized. utterancesourcemulti.h 340  <\/p>\n<pre><code class=\"cpp\">template &lt;class UTTREF&gt; std::vector&lt;shiftedvector&lt;....&gt;&gt;getclassids(const UTTREF &amp;uttref) {   std::vector&lt;shiftedvector&lt;....&gt;&gt; allclassids;   allclassids.empty();  \/\/ &lt;=   .... }<\/code><\/pre>\n<p>  \u041d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 empty(). \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u0443\u0442 \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 clear().<\/p>\n<p>  \u041f\u043e\u0445\u043e\u0436\u0435\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<ul>\n<li>V530 The return value of function &#8217;empty&#8217; is required to be utilized. utterancesourcemulti.h 364<\/li>\n<\/ul>\n<p>  <a href=\"http:\/\/www.viva64.com\/ru\/d\/0322\/\">V688<\/a> The &#8216;m_file&#8217; local variable possesses the same name as one of the class members, which can result in a confusion. sequencereader.cpp 552  <\/p>\n<pre><code class=\"cpp\">template &lt;class ElemType&gt; class SequenceReader : public IDataReader&lt;ElemType&gt; { protected:   bool m_idx2clsRead;   bool m_clsinfoRead;    bool m_idx2probRead;   std::wstring m_file;                               \/\/ &lt;=   .... }  template &lt;class ElemType&gt; template &lt;class ConfigRecordType&gt; void SequenceReader&lt;ElemType&gt;::InitFromConfig(....) {   ....   std::wstring m_file = readerConfig(L&quot;file&quot;);       \/\/ &lt;=   if (m_traceLevel &gt; 0)   {     fprintf(stderr, &quot;....&quot;, m_file.c_str());    }   .... }<\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435, \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u0438\u043c \u0441\u0442\u0438\u043b\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435: \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u00abstd::wstring m_file = readerConfig(L\u00bbfile&quot;);&quot; \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0438\u043b\u0438 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c?<\/p>\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<ul>\n<li>V688 The &#8216;m_file&#8217; local variable possesses the same name as one of the class members, which can result in a confusion. sequencereader.cpp 1554<\/li>\n<li>V688 The &#8216;m_mbStartSample&#8217; function argument possesses the same name as one of the class members, which can result in a confusion. sequencereader.cpp 2062<\/li>\n<li>V688 The &#8216;m_file&#8217; local variable possesses the same name as one of the class members, which can result in a confusion. lusequencereader.cpp 417<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  Computational Network Toolkit (CNTK) \u2014 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442 CNTK \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442, \u0442\u043e \u0436\u0434\u0451\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0436\u0434\u0451\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Microsoft.  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d4b\/491\/499\/d4b491499525c0af984a6ed264b69812.png\" \/><\/div>\n<p>  <a href=\"http:\/\/www.viva64.com\/en\/b\/0372\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/35e\/064\/ddf\/35e064ddf91f5d99b620384893909ff7.png\" \/><\/div>\n<p><\/a><br \/>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Svyatoslav Razmyslov. <a href=\"http:\/\/www.viva64.com\/en\/b\/0372\/\">\u00abWhy is there no artificial intelligence yet?\u00bb Or, analysis of CNTK tool kit from Microsoft Research<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441?<\/b><\/p>\n<div class=\"spoiler_text\">\u0427\u0430\u0441\u0442\u043e \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043d\u0438\u0445 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"http:\/\/www.viva64.com\/ru\/a\/0085\/\">\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e PVS-Studio, \u0432\u0435\u0440\u0441\u0438\u044f 2015<\/a>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c.  <\/div>\n<\/div>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/276427\/\"> https:\/\/habrahabr.ru\/post\/276427\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/28d\/8ca\/299\/28d8ca299b2cea0c702798c5e349aa68.png\" align=\"left\"\/>Microsoft \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0430 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430: \u043d\u0430\u0431\u043e\u0440 Computational Network Toolkit \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 Github. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-273420","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=273420"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273420\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}