2
simannealパッケージhttps://github.com/perrygeo/simannealでシミュレーテッドアニーリングを使用して、自分の関数/オブジェクトのパラメータを最適化しようとしています。次のように 私のコードでは、なりますsimannealパッケージの使用方法
from simanneal import Annealer
class ReservoirAnnealer(Annealer):
def __init__(self, state, res):
self.reservoir = res
self.resSize = np.size(self.reservoir.W_top)
super(ReservoirAnnealer, self).__init__(state)
def move(self):
a = random.randint(0, self.resSize)
b = random.randint(0, self.resSize)
self.state[a,b] ^= 1
def energy(self):
reservoir.W = self.state
return reservoir.fit(data, 1500, penalty=5e-7, errorEvaluationLength=750)
reservoir = Reservoir(1,1023,spectralRadius=1.25,inputScaling=1,leakingRate=0.3, transientTime=100)
initialState = reservoir.W_top.ravel()
annealer = ReservoirAnnealer(initialState, reservoir)
W_topが0または内部の1のいずれかの行列であるので、このような何か:私は上記のコードを実行すると
[ 1. 1. 1. ..., 0. 0. 1.]
、私はエラーを取得しています:
ValueError Traceback (most recent call last)
<ipython-input-87-5a5b9eb8c324> in <module>()
20 reservoir = Reservoir(1,1023,spectralRadius=1.25,inputScaling=1,leakingRate=0.3, transientTime=100)
21 initialState = reservoir.W_top.ravel()
---> 22 annealer = ReservoirAnnealer(initialState, reservoir)
23 #itinearay, cost = annealer.anneal()
<ipython-input-87-5a5b9eb8c324> in __init__(self, state, res)
6 self.reservoir = res
7 #self.resSize = np.size(self.reservoir.W)
----> 8 super(ReservoirAnnealer, self).__init__(state)
9
10
C:\Users\Luca\Anaconda3\lib\site-packages\simanneal\anneal.py in __init__(self, initial_state, load_state)
45
46 def __init__(self, initial_state=None, load_state=None):
---> 47 if initial_state:
48 self.state = self.copy_state(initial_state)
49 elif load_state:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
私は本当に知っている、何を意味する。元の例は辞書で動作しますが、私の行列はかなり大きく、辞書に入れたくありません。 誰かがライブラリを正しく使う方法を知っていますか?
フルトレースバック? – user3684792
その代わりにリストを渡してください(init関数 - なぜnumpy配列のif文が失敗するのでしょうか) – user3684792
ああ、ありがとう、それは –