Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Вопрос по Not defined


Автор: andreyoff 14.3.2018, 12:40
import numpy as np
import tensorflow as tf
import os
import matplotlib.pyplot as plt
import time

# X = (hours sleeping, hours studying), y = Score on test
X = np.array(([3,5], [5,1], [10,2]), dtype=float)
y = np.array(([75], [82], [93]), dtype=float)

# Normalize
X = X/np.amax(X, axis=0)
y = y/100 # max test score is 100

class Neural_Network(object):
    def __init__(self):
        self.inputLayerSize = 2
        self.outputLayerSize = 1
        self.hiddenLayerSize = 3

        #Weights (parameters)
        self.W1 = np.random.randn(self.inputLayerSize, self.hiddenLayerSize)
        self.W2 = np.random.randn(self.hiddenLayerSize, self.outputLayerSize)


    def forward(self, X):
        #Propagate inputs though network
        self.z2 = np.dot(X, self.W1)
        self.a2 = self.sigmoid(self.z2)
        self.z3 = np.dot(self.a2, self.W2)
        yHat = self.sigmoid(self.z3) 
        return yHat
    
    def sigmoid(self, z):
        #Apply sigmoid activation function to scalar, vector, or matrix
        return 1/(1+np.exp(-z))
    
    def sigmoidPrime(self, z):
        #Gradient of sigmoid
        return np.exp(-z)/((1+np.exp(-z))**2)


# Load perceptron
NN = Neural_Network()
yHat = NN.forward(X)
print("predict with no mistake checking")
print(yHat)


# test SigmoidPrime
testValues = np.arange(-5,5,0.01)
plt.plot(testValues, sigmoid(testValues), linewidth=2)
plt.plot(testValues, sigmoidPrime(testValues), linewidth=2)
plt.grid(1)
plt.legend(['sigmoid', 'sigmoidPrime'])


При запуске выдает:

predict with no mistake checking
[[ 0.23287488]
 [ 0.23454401]
 [ 0.21012952]]
Traceback (most recent call last):
  File "C:\Tensorflow\Predict exam result grid only.py", line 76, in <module>
    plt.plot(testValues, sigmoid(testValues), linewidth=2)
NameError: name 'sigmoid' is not defined
>>> 

Прошу подсказать, почему name 'sigmoid' is not defined? И соответственно, график не рисует.
А yHat выдает корректно.

Автор: Romikgy 14.3.2018, 15:49
Цитата(andreyoff @  14.3.2018,  11:40 Найти цитируемый пост)
class Neural_Network(object):


Цитата(andreyoff @  14.3.2018,  11:40 Найти цитируемый пост)
def sigmoid(self, z):


Цитата(andreyoff @  14.3.2018,  11:40 Найти цитируемый пост)
NN = Neural_Network()


Цитата(andreyoff @  14.3.2018,  11:40 Найти цитируемый пост)
plt.plot(testValues, sigmoid(testValues), linewidth=2)


need 
Код

NN.sigmoid(testValues)

if you use classes

PS use button Code!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)