使用net = load('net-epoch-100.mat');
trainOpts.learningRate = [0.004*ones(1,25), 0.002*ones(1,25),
0.001*ones(1,25), 0.0005*ones(1,25)]; %I set much higher training rate
%for pretraining on datasets B and C
net.layers=net.layers(1:end-13); %only taking first three layers from pretrained net
... the rest of the layers
。
numpy.float32
使用常规Python t = numpy.float32(.3)
x = numpy.float32(1)
r = numpy.float32(-.3)
_t = t+x+r
_t == 1 # -> False
。
float
为什么?
答案 0 :(得分:2)
Python float是一个C double类型:documentation:
浮点数通常使用C中的 double 来实现;
sys.float_info
中提供了有关运行程序的机器的浮点数的精度和内部表示的信息。
因此,您要比较32和64个精度浮点数。以下内容适用:
t = numpy.float64(.3)
x = numpy.float64(1)
r = numpy.float64(-.3)
_t = t+x+r
_t == 1
答案 1 :(得分:1)
浮点值在计算机上本质上是不精确的。根据{{3}},python默认float
是大多数机器上的双精度浮点数。 numpy.float32
是一个精度浮点数。它的双精度对应物是numpy.float64
。这可以解释这种情况的不同之处。
通常,不应使用==
直接比较浮点数。您可以使用numpy.isclose
来处理由非精确浮点表示引起的小错误。