fann2
我今天的问题是关于Python 2 包的奇怪行为,同时使用matplotlib
或pyqtgraph
同时使用。
假设我需要实时绘制我的 FANN 网络 MSE。然后我将使用matplotlib
交互性和一些while True
循环或Thread
更新我的情节。但为简单起见,让我们举一个下面的例子。
以下脚本将创建一个新的神经网络并将其存储到一个文件中:
#!/usr/bin/python2
from fann2 import libfann
import matplotlib.pyplot as plt
PLOT = False
if PLOT:
plt.show()
axes = plt.subplot(111)
connection_rate = 1
layers = (10, 5)
activation_f = libfann.SIGMOID_SYMMETRIC_STEPWISE
ann = libfann.neural_net()
ann.create_sparse_array(connection_rate, layers)
ann.randomize_weights(-0.1, 0.1)
ann.save('my_network.ann')
请注意PLOT
当前禁用绘图的标志。
现在让我们看一下输出文件。让我们看看最后一行:
connections (connected_to_neuron, weight)=(0, -9.04591381549835205078e-02) ...
(...
表示更多省略的字符)
一切都很好,直到我们将PLOT
value 更改为True
... 之后,相应的行将如下所示:
connections (connected_to_neuron, weight)=(0, -7,55163878202438354492e-02) ...
这会导致加载保存的网络时出错。例子:
from fann2 import libfann
ann = libfann.neural_net()
ann.create_from_file('my_network.ann')
给出以下错误:FANN Error 4: Error reading "connection_rate" from configuration file "my_network.ann".
有人知道如何解决这个奇怪的问题吗?也许我应该简单地在 matplotlib 的某个地方更改浮点数格式?我已经搜索了他们的文档,但还没有找到如何做到这一点。
我想这个原因在别的地方。这很有趣,但 PyQtGraph 给出了相同的结果。这是一个奖励脚本:
#!/usr/bin/python2
from fann2 import libfann
import pyqtgraph as pg
PLOT = False
if PLOT:
pg.plot([1, 2], [3, 4], pen=None, symbol='o')
connection_rate = 1
layers = (10, 5)
activation_f = libfann.SIGMOID_SYMMETRIC_STEPWISE
ann = libfann.neural_net()
ann.create_sparse_array(connection_rate, layers)
ann.randomize_weights(-0.1, 0.1)
ann.save('my_network.ann')