0

私の今日の質問は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現在プロットを無効にしているフラグに注意してください。

では、出力ファイルを見てみましょう。最後の行の fe を見てみましょう:

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')
4

1 に答える 1