<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Hi Pavel, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163923#M28107</link>
    <description>&lt;P&gt;&lt;BR style=" font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " /&gt;
	Hi Pavel,&lt;/P&gt;

&lt;P&gt;One more comment,&amp;nbsp; in the DAAL library, there is one normalize function , z-score, which can compute the xij-mj/thetaj by column.&lt;/P&gt;

&lt;P&gt;&lt;A href="https://software.intel.com/en-us/blogs/daal" target="_blank" h="ID=SERP,5118.1"&gt;&lt;STRONG&gt;&lt;I&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Intel&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt;® &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Data&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Analytics&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Acceleration&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="null hover_target"&gt;&lt;FONT color="#001ba0"&gt;Library&lt;/FONT&gt;&lt;/I&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt; | &lt;/FONT&gt;&lt;/I&gt;&lt;STRONG&gt;&lt;I&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt;Intel&lt;/FONT&gt;&lt;/I&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt;…&lt;/FONT&gt;&lt;/I&gt;&lt;/A&gt;&lt;/P&gt;

&lt;DIV class="b_caption"&gt;
	&lt;DIV class="b_attribution" u="0N|5106|4660548052126386|fRaQBY-vRQ9HX0Cty6Xe3PvlfG15rdR0"&gt;&lt;CITE&gt;&lt;FONT color="#006d21"&gt;&lt;A href="https://software" target="_blank"&gt;https://software&lt;/A&gt;.&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#006d21"&gt;intel&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color="#006d21"&gt;.com/en-us/blogs/&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#006d21"&gt;daal&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CITE&gt;&lt;/DIV&gt;

	&lt;DIV class="b_attribution" u="0N|5106|4660548052126386|fRaQBY-vRQ9HX0Cty6Xe3PvlfG15rdR0"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;B&gt;&lt;FONT color="#0860a8" size="3"&gt;Z-score&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;BR /&gt;
		&lt;SPAN class="fontstyle1"&gt;&lt;FONT face="verdana" size="2"&gt;Z-score normalization is an algorithm to normalize the observations by each feature (column).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR style=" font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " /&gt;
		&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;P&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="verdana" size="2"&gt;C++: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;./examples/cpp/source/normalization/zscore_dense_batch.cpp&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;Best Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;​Ying &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 05 Jan 2018 04:19:11 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2018-01-05T04:19:11Z</dc:date>
    <item>
      <title>Normalize matrix by sum of columns</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163921#M28105</link>
      <description>&lt;P&gt;I have a tensor - batch of matrixes dims [10 x 6 x 52]&amp;nbsp; 10&amp;nbsp; matrixes 6 * 52 raw major.&amp;nbsp; &lt;SPAN style="font-size: 13.008px;"&gt;I can change batch size as I want.&amp;nbsp;&lt;/SPAN&gt;Data type is -&amp;nbsp;single float.&amp;nbsp;&lt;SPAN style="font-size: 1em;"&gt;And I&amp;nbsp; need to normalize every matrix in&amp;nbsp;the tensor by it columns sum(so sum will be a vector of length 52). So I need make a columnwise&amp;nbsp;sum and devide&amp;nbsp;every&amp;nbsp;row in matrix to it.&amp;nbsp; A pretty&amp;nbsp;typical task in different areas.&amp;nbsp; Currently, I am doing something like this:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;DIV&gt;
	&lt;DIV&gt;//[10 x 6 x 52] - [batch x actions x cards_count]&lt;/DIV&gt;

	&lt;DIV&gt;//&amp;nbsp;node.regrets is target and source tensor.&amp;nbsp;&amp;nbsp;node.regrets_sum - storage for sum.&lt;/DIV&gt;

	&lt;DIV&gt;const size_t actionsCount = node.ActionsCount();&lt;/DIV&gt;

	&lt;DIV&gt;for (long long b = 0; b &amp;lt; _batch_size; b++)&lt;/DIV&gt;

	&lt;DIV&gt;{&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em;"&gt;memset(node.regrets_sum.data(), 0, node.regrets_sum.size() * sizeof(float));&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;for (size_t a = 0; a &amp;lt; actionsCount; a++)&lt;/DIV&gt;

	&lt;DIV&gt;{&lt;/DIV&gt;

	&lt;DIV&gt;const size_t regretsOffset = (b * actionsCount + a) * cards_count;&lt;/DIV&gt;

	&lt;DIV&gt;vsAdd(card_count, node.regrets_sum.data(), node.regrets.data() + regretsOffset, node.regrets_sum.data());&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em;"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;for (size_t a = 0; a &amp;lt; actionsCount; a++)&lt;/DIV&gt;

	&lt;DIV&gt;{&lt;/DIV&gt;

	&lt;DIV&gt;const size_t regretsOffset = (b * actionsCount + a) * cards_count;&lt;/DIV&gt;

	&lt;DIV&gt;vsDiv(card_count, node.regrets.data() + regretsOffset, node.regrets_sum.data(), node.regrets.data() + regretsOffset);&lt;/DIV&gt;

	&lt;DIV&gt;}&lt;/DIV&gt;

	&lt;DIV&gt;}&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;And this is the hottest point of my app. I am pretty sure that performance&amp;nbsp;can be improved because currently by the profiling I know that&amp;nbsp;gemm&amp;nbsp;with this tensor is faster than this normalization. Any ideas how to optimize this with help of MKL and Intel compiler? Maybe I have missed some ready to use routine for this case. Thank you in advance!&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 27 Nov 2017 17:50:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163921#M28105</guid>
      <dc:creator>Konovalov__Pavel</dc:creator>
      <dc:date>2017-11-27T17:50:40Z</dc:date>
    </item>
    <item>
      <title>Hi Pavel,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163922#M28106</link>
      <description>&lt;P&gt;Hi Pavel,&lt;BR /&gt;
	​there are some normalization function&amp;nbsp;in Intel IPP and MKL for example, ipps_normlize,&amp;nbsp; mkl_dnn tensor&amp;nbsp;LRN etc.(please see their developer reference&amp;nbsp;manual).&amp;nbsp; &amp;nbsp;Seemingly there is&amp;nbsp;not exact the column based normalization. Considering your tensor size like 10x6x52, yes, you may use intel compiler like Openmp Verctorizion (generate FMA&amp;nbsp;code directly)&amp;nbsp;and multithread to optimize your c code .&lt;BR /&gt;
	​Best Regards,&lt;BR /&gt;
	​Ying&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 29 Dec 2017 01:49:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163922#M28106</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2017-12-29T01:49:55Z</dc:date>
    </item>
    <item>
      <title>Hi Pavel,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163923#M28107</link>
      <description>&lt;P&gt;&lt;BR style=" font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " /&gt;
	Hi Pavel,&lt;/P&gt;

&lt;P&gt;One more comment,&amp;nbsp; in the DAAL library, there is one normalize function , z-score, which can compute the xij-mj/thetaj by column.&lt;/P&gt;

&lt;P&gt;&lt;A href="https://software.intel.com/en-us/blogs/daal" target="_blank" h="ID=SERP,5118.1"&gt;&lt;STRONG&gt;&lt;I&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Intel&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt;® &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Data&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Analytics&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="01"&gt;&lt;FONT color="#001ba0"&gt;Acceleration&lt;/FONT&gt;&lt;/I&gt;&lt;FONT color="#001ba0"&gt; &lt;/FONT&gt;&lt;I class="null hover_target"&gt;&lt;FONT color="#001ba0"&gt;Library&lt;/FONT&gt;&lt;/I&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt; | &lt;/FONT&gt;&lt;/I&gt;&lt;STRONG&gt;&lt;I&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt;Intel&lt;/FONT&gt;&lt;/I&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;FONT color="#001ba0"&gt;…&lt;/FONT&gt;&lt;/I&gt;&lt;/A&gt;&lt;/P&gt;

&lt;DIV class="b_caption"&gt;
	&lt;DIV class="b_attribution" u="0N|5106|4660548052126386|fRaQBY-vRQ9HX0Cty6Xe3PvlfG15rdR0"&gt;&lt;CITE&gt;&lt;FONT color="#006d21"&gt;&lt;A href="https://software" target="_blank"&gt;https://software&lt;/A&gt;.&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#006d21"&gt;intel&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color="#006d21"&gt;.com/en-us/blogs/&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#006d21"&gt;daal&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/CITE&gt;&lt;/DIV&gt;

	&lt;DIV class="b_attribution" u="0N|5106|4660548052126386|fRaQBY-vRQ9HX0Cty6Xe3PvlfG15rdR0"&gt;&lt;SPAN class="fontstyle0"&gt;&lt;B&gt;&lt;FONT color="#0860a8" size="3"&gt;Z-score&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;BR /&gt;
		&lt;SPAN class="fontstyle1"&gt;&lt;FONT face="verdana" size="2"&gt;Z-score normalization is an algorithm to normalize the observations by each feature (column).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR style=" font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " /&gt;
		&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;P&gt;&lt;SPAN class="fontstyle0"&gt;&lt;FONT face="verdana" size="2"&gt;C++: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;./examples/cpp/source/normalization/zscore_dense_batch.cpp&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;Best Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="fontstyle2"&gt;&lt;FONT size="2"&gt;​Ying &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jan 2018 04:19:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Normalize-matrix-by-sum-of-columns/m-p/1163923#M28107</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2018-01-05T04:19:11Z</dc:date>
    </item>
  </channel>
</rss>

