【发布时间】:2015-02-13 20:57:11
【问题描述】:
我今天的问题是关于 Python 2 的 fann2 包的奇怪行为,同时使用 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 标志。
现在让我们看一下输出文件。让我们看看 f.e.最后一行:
connections (connected_to_neuron, weight)=(0, -9.04591381549835205078e-02) ...
(... 表示更多省略的字符)
一切都很好,直到我们将 PLOT 值更改为 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')
【问题讨论】:
-
我建议向 PyFANN 开发人员询问这个问题;听起来像一个错误。
标签: python matplotlib pyqtgraph fann