Pythonの単一ニューロンニューラルネットワーク
ニューラルネットワークはディープラーニングの非常に重要なコアです。それは多くの異なる分野で多くの実用的なアプリケーションを持っています。現在、これらのネットワークは、画像分類、音声認識、オブジェクト検出などに使用されています。
これが何で、どのように機能するかを理解しましょう。
このネットワークにはさまざまなコンポーネントがあります。それらは次のとおりです-
- 入力レイヤーx
- 任意の量の非表示レイヤー
- 出力レイヤー、ŷ
- Wとbで定義される各レイヤー間の重みとバイアスのセット
- 次は、各隠れ層σの活性化関数の選択です。
この図では、2層のニューラルネットワークが示されています(ニューラルネットワークの層の数を数える場合、入力層は通常除外されます)
このグラフでは、円はニューロンを表し、線はシナプスを表しています。シナプスは、入力と重みを乗算するために使用されます。重みはニューロン間の接続の「強さ」と考えています。重みはニューラルネットワークの出力を定義します。
単純なフィードフォワードニューラルネットワークの仕組みの概要は次のとおりです-
フィードフォワードニューラルネットワークを使用する場合、いくつかの手順に従う必要があります。
-
まず、入力を行列(数値の2D配列)として受け取ります
-
次は、入力に設定された重みを掛けます。
-
次に、活性化関数を適用します。
-
出力を返します。
-
次の誤差が計算されます。これは、データからの目的の出力と予測された出力の差です。
-
そして、重みはエラーに応じて少し変化します。
-
トレーニングするには、このプロセスを1,000回以上繰り返し、トレーニングするデータが多いほど、出力の精度が高くなります。
学習時間、睡眠時間(入力)テストスコア(出力)
2, 992 1, 586 3, 689 4, 8?
サンプルコード
from numpy import exp, array, random, dot, tanh class my_network(): def __init__(self): random.seed(1) # 3x1 Weight matrix self.weight_matrix = 2 * random.random((3, 1)) - 1 defmy_tanh(self, x): return tanh(x) defmy_tanh_derivative(self, x): return 1.0 - tanh(x) ** 2 # forward propagation defmy_forward_propagation(self, inputs): return self.my_tanh(dot(inputs, self.weight_matrix)) # training the neural network. deftrain(self, train_inputs, train_outputs, num_train_iterations): for iteration in range(num_train_iterations): output = self.my_forward_propagation(train_inputs) # Calculate the error in the output. error = train_outputs - output adjustment = dot(train_inputs.T, error *self.my_tanh_derivative(output)) # Adjust the weight matrix self.weight_matrix += adjustment # Driver Code if __name__ == "__main__": my_neural = my_network() print ('Random weights when training has started') print (my_neural.weight_matrix) train_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]]) train_outputs = array([[0, 1, 1, 0]]).T my_neural.train(train_inputs, train_outputs, 10000) print ('Displaying new weights after training') print (my_neural.weight_matrix) # Test the neural network with a new situation. print ("Testing network on new examples ->") print (my_neural.my_forward_propagation(array([1, 0, 0])))
出力
Random weights when training has started [[-0.16595599] [ 0.44064899] [-0.99977125]] Displaying new weights after training [[5.39428067] [0.19482422] [0.34317086]] Testing network on new examples -> [0.99995873]
-
Pythonモジュールを単一のファイルにカプセル化する方法は?
通常、Pythonモジュールを1つのファイルにカプセル化することはできません。そうすると、Pythonが使用するモジュール検索方法(ファイルとディレクトリ)が破壊されるためです。マシンにモジュールをインストールできない場合(十分な権限がないため)、virtualenvを使用するか、モジュールファイルを別のディレクトリに保存し、次のコードを使用して、Pythonが特定のモジュール内のモジュールを検索できるようにします。 >>> import os, sys >>> file_path = 'AdditionalModules/' >&g
-
Pythonの文字列がASCIIであるかどうかを確認するにはどうすればよいですか?
最も簡単な方法は、文字列の文字をループして、各文字がASCIIであるかどうかを確認することです。 例 def is_ascii(s): return all(ord(c) < 128 for c in s) print is_ascii('ӓmsterdӒm') 出力 これにより出力が得られます: False しかし、この方法は非常に非効率的です。より良い方法は、str.decode(ascii)を使用して文字列をデコードし、例外をチェックすることです。 例 mystring = 'ӓmsterdӓm' try: