コンバージョンコスト値のためのPypiパッケージ(フィットネス値よりも優れています)(より良い方が良いです)。
pip install cost2fitness
これは、スケール、平均などに依存する変換numpyアレイのいくつかの方法を含むパッケージです。しかし、それを使用する主な方法は、コスト値(より少ない)からフィットネス値(より多くの方が良い)への変換とその逆です。あなたが使用するとき、それは非常に役立ちます
いくつかの単純な変圧器があります。各トランスは、入力配列を新しい表現に変換するnameフィールドとtransform(array)メソッドを含むBaseTransformerクラスのサブクラスです。
チェックリスト:
ReverseByAverage 、AntiMax 、AntiMaxPercent(percent) 、Min2Zero 、Min2Value(value) 、ProbabilityView (データを確率に変換)、SimplestReverse 、AlwaysOnes (1つの配列を返します)、NewAvgByMult(new_average) 、NewAvgByShift(new_average)Divider(divider_number_or_array) (数字または配列に配列を分割します。固定開始正規化に役立ちます)Argmax (配列の最大要素の位置を返す)Prob2Class(threshold = 0.5) (確率をクラス0/1に変換するため)ToNumber (最初の要素を取得することで配列を1つの数値に変換)ファイルからの単純なロジックを使用して、変圧器を作成できます。
import numpy as np
from cost2fitness import Min2Zero
tf = Min2Zero ()
arr_of_scores = np . array ([ 10 , 8 , 7 , 5 , 8 , 9 , 20 , 12 , 6 , 18 ])
tf . transform ( arr_of_scores )
# array([ 5, 3, 2, 0, 3, 4, 15, 7, 1, 13]) また、 Plパイプラインを使用してこれらの変圧器を結合することもできます。例えば:
import numpy as np
from cost2fitness import ReverseByAverage , AntiMax , Min2Zero , Pl
pipe = Pl ([
Min2Zero (),
ReverseByAverage (),
AntiMax ()
])
arr_of_scores = np . array ([ 10 , 8 , 7 , 5 , 8 , 9 ])
# return each result of pipeline transformation (with input)
pipe . transform ( arr_of_scores , return_all_steps = True )
#array([[10. , 8. , 7. , 5. , 8. ,
# 9. ],
# [ 5. , 3. , 2. , 0. , 3. ,
# 4. ],
# [ 0.66666667, 2.66666667, 3.66666667, 5.66666667, 2.66666667,
# 1.66666667],
# [ 5. , 3. , 2. , 0. , 3. ,
# 4. ]])
# return only result of transformation
pipe . transform ( arr_of_scores , return_all_steps = False )
#array([5., 3., 2., 0., 3., 4.]) 変換プロセスの結果をプロットするためのplot_scores関数があります。それは議論を持っています:
scores :構造[start_values, first_transform(start_values), second_transform(first_transform), ...]を備えた2D numpyアレイ2D numpyアレイ、各オブジェクトはスコアの1Dアレイ(値/コスト/フィットネス)です。names : None /文字列リスト、プロットラベルの各ステップのオプション名。デフォルトはNoneです。kind :str、 「Bession」のオプション新しい列は以前の横にあります。 「アンダー」の場合、以前に新しいプロットがあります。デフォルトは「Beside」です。save_as : None /str、プロットを保存するオプションのファイルパス。デフォルトはNoneです。 コード










コード


ここで基本的なニューラルネットワークツールを作成しました。いくつかの補強学習タスクを備えた単純なネットワークを使用することが非常に必要なため、1つのサンプルのみで予測(前方伝播)が必要な場合は、Kerasのような一般的なパッケージは非常に遅くなります。したがって、これらのケースにシンプルなNumpyベースのパッケージを使用する方が速くなります。
この変圧器ロジックを使用してニューラルネットワークを作成するのはそれほど難しくありませんでした。したがって、このパッケージには次のニューラルネットワークレイヤーが変圧器としてあります。
アクティベーション:
SoftmaxReluLeakyRelu(alpha = 0.01)SigmoidTanhArcTanSwish(beta = 0.25)SoftplusSoftsignElu(alpha)Selu(alpha, scale)高密度の層ツール:
Bias(bias_len, bias_array = None) - 長さのbias_lenを含むバイアスを追加します。 bias_arrayがNone場合、ランダムバイアスを使用しますMatrixDot(from_size, to_size, matrix_array = None)NNStep(from_size, to_size, matrix_array = None, bias_array = None) - より速く作成したい場合は、 MatrixDotとBiasを一緒にバイアスしますまた、ニューラルネットワークのようなpipelineオブジェクトを使用するためのヘルパーの方法がいくつかあります(もちろん、前方の伝播のみ):
pipelineオブジェクトメソッド:
get_shapes() - nnの必要な配列の形状のリストを取得するにはtotal_weights() - NN全体の重みのカウントを取得しますset_weights(weights) - nnの重み(必要な形状のある配列のリストとして)を設定します単独の機能:
arr_to_weigths(arr, shapes) -1d-array arrを形状のshapesのアレイのリストに変換して、 set_weightsメソッドに入れます最も簡単な例を参照してください