int32和float32的点积在Theano中产生float64

时间:2017-06-09 04:00:33

标签: python numpy theano

编译函数时

<% @open_orders.each do |order| %>
  <tr>
    <td><%= order.client_id %></td>
    <td><%= order.order_number %></td>
    <td><%= order.property.address1 %></td>
    <td><%= order.property.owners %></td>
    <td><%= order.order_update ? "Yes" : "No" %></td>
    <td><%= order.status %></td>
    <td><%= order.task %></td>
    <td><%= order.created_at %></td>
    <td><%= link_to fa_icon("edit"), edit_property_order_path(order, order.property.id), class: "m-r-xs", remote: true, data: { 'data-toggle' => "modal", 'data-target' => '#orders-modal'} %></td>
  </tr>

结果输出是float64,即使x的类型为int32且y的类型为float32。当我计算相同的操作,其中x是float32类型的Theano fmatrix时,生成的矩阵是float32。为什么在前一种情况下不会保留较小的位大小?换句话说,为什么在Theano中int32和float32的点积等于float64而不是float32?

我正在使用Theano版本0.9.0

1 个答案:

答案 0 :(得分:1)

一般来说,假设你想要保持你开始的精度。 int32有31个有效位,float32有24个有效位和8个指数位。因此,停留在其中任何一个都可能导致精度降低,并选择float64,其53个有效位。

您也可以configure theano not to use float64 by default