Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの単一ニューロンニューラルネットワーク


ニューラルネットワークはディープラーニングの非常に重要なコアです。それは多くの異なる分野で多くの実用的なアプリケーションを持っています。現在、これらのネットワークは、画像分類、音声認識、オブジェクト検出などに使用されています。

これが何で、どのように機能するかを理解しましょう。

このネットワークにはさまざまなコンポーネントがあります。それらは次のとおりです-

  • 入力レイヤーx
  • 任意の量の非表示レイヤー
  • 出力レイヤー、ŷ
  • Wとbで定義される各レイヤー間の重みとバイアスのセット
  • 次は、各隠れ層σの活性化関数の選択です。

この図では、2層のニューラルネットワークが示されています(ニューラルネットワークの層の数を数える場合、入力層は通常除外されます)

Pythonの単一ニューロンニューラルネットワーク

このグラフでは、円はニューロンを表し、線はシナプスを表しています。シナプスは、入力と重みを乗算するために使用されます。重みはニューロン間の接続の「強さ」と考えています。重みはニューラルネットワークの出力を定義します。

単純なフィードフォワードニューラルネットワークの仕組みの概要は次のとおりです-

フィードフォワードニューラルネットワークを使用する場合、いくつかの手順に従う必要があります。

  • まず、入力を行列(数値の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]

  1. Pythonモジュールを単一のファイルにカプセル化する方法は?

    通常、Pythonモジュールを1つのファイルにカプセル化することはできません。そうすると、Pythonが使用するモジュール検索方法(ファイルとディレクトリ)が破壊されるためです。マシンにモジュールをインストールできない場合(十分な権限がないため)、virtualenvを使用するか、モジュールファイルを別のディレクトリに保存し、次のコードを使用して、Pythonが特定のモジュール内のモジュールを検索できるようにします。 >>> import os, sys >>> file_path = 'AdditionalModules/' >&g

  2. 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: