

現在、Deep
learningを勉強していまして、昨日までは下記のコードで実行してもエラーが起きなかったのですが、先ほど勉強を始めようと思い、PC起動⇒下記のコードを実行したところ、なぜかエラーが起きてしまいました。なぜ、昨日までは実行できて、いきなり実行できなくなってしまったのか理解できません。  
この下記の現象についてご教示願います。よろしくお願いいたします。

[code]

    import numpy as np
    
    def init_network():
        network = {}
        network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
        network['b1'] = np.array([0.1, 0.2, 0.3])
        network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
        network['b2'] = np.array([0.1, 0.2])
        network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
        network['b3'] = np.array([0.1, 0.2])
        
        return network
    
    def forward(network, x):
        W1, W2, W3 = network['W1'], network['W2'], network['W3']
        b1, b2, b3 = network['b1'], network['b2'], network['b3']
        
        a1 = np.dot(x, W1) + b1
        z1 = sigmoid(a1)
        a2 = np.dot(z1, W2) + b2
        z2 = sigmoid(a2)
        a3 = np.dot(z2, W3) + b3
        y = identity_function(a3)
        
        return y
    
    network = init_network()
    x = np.array([1.0, 0.5])
    y = forward(network, x)
    print(y)
    
[/code]

[code]

    NameError                                 Traceback (most recent call last)
    <ipython-input-61-d459db580be1> in <module>
         27 network = init_network()
         28 x = np.array([1.0, 0.5])
    ---> 29 y = forward(network, x)
         30 print(y)
    
    <ipython-input-61-d459db580be1> in forward(network, x)
         17 
         18     a1 = np.dot(x, W1) + b1
    ---> 19     z1 = sigmoid(a1)
         20     a2 = np.dot(z1, W2) + b2
         21     z2 = sigmoid(a2)
    
    NameError: name 'sigmoid' is not defined
    
[/code]


CC BY-SA 4.0
2020-07-12T06:00:55.090
68510
2020-07-12T09:17:33.870
2020-07-12T06:21:16.520
3060
40847
question
python python3
sigmoid関数を使用するとエラーが起きる


出力の感じからすると Jupyter Notebook の python
カーネルを使ってらっしゃるのではないでしょうか。とすると、「昨日」は何らかのセルを実行した際に sigmoid
関数を定義していて使えていたものの削除されており、「今日」はそれらの状態がリセットされており、改めてセルを先頭から実行しようとしたところ定義が見つからずエラーになっているように見えます。

Jupyter Notebook
は（特別に再実行しない限り）今まで実行したセルによって変更された状態を引き継ぎます。このため見た目のプログラムは同じでもセル内容の変更や削除によって初期状態が異なると結果が異なることがありえます。

もし質問文に記載されているプログラムが今回の notebook の全体なのでしたら、まずは sigmoid 関数を定義してみてください。


CC BY-SA 4.0
2020-07-12T09:17:33.870
68519
2020-07-12T09:17:33.870
19110
68510
answer