似乎没有缩进错误

时间:2018-11-18 19:51:44

标签: python-2.7 image-processing neural-network

您一直在尝试运行此脚本,但最后始终出现缩进错误 backprop(x,y)函数。我将非常感谢您的帮助!

import cPickle
import gzip

def load_data():

    f = gzip.open('mnist.pkl.gz', 'rb')
    training_data, validation_data, test_data = cPickle.load(f)
    f.close()
    return (training_data, validation_data, test_data)

import numpy as np

class Network(object):
    def __init__(self, layers):
        self.layers = layers
        self.biases = [np.random.randn(y,1) for y
                        in layers[1:]]
        self.weights = [np.transpose(np.random.randn(x,y))
                        for x,y
                        in zip(layers[:-1],layers[1:])]
        self.num_layers = len(layers)




    def backprop(self, x, y):
        nabla_b = [np.zeros(b.shape) for b in self.biases]
        nabla_w = [np.zeros(w.shape) for w in self.weights]
        # feedforward
        activation = x
        activations = [x] # list to store all the activations, layer by layer
        zs = [] # list to store all the z vectors, layer by layer
        for b, w in zip(self.biases, self.weights):
            z = np.dot(w, activation)+b
            zs.append(z)
            activation = sigmoid(z)
            activations.append(activation)
        # backward pass
        delta = self.cost_derivative(activations[-1], y) * \
            sigmoid_prime(zs[-1])#set first delta 
        nabla_b[-1] = delta#set last dC/db to delta vector 
        nabla_w[-1] = np.dot(delta, activations[-2].transpose())
        #calculate nabla_b, nabla_w for the rest of the layers
        for l in xrange(2, self.num_layers):
            z = zs[-l]
            sp = sigmoid_prime(z)   
            delta = np.dot(self.weights[-l+1].transpose(), delta) * sp
            nabla_b[-l] = delta
            nabla_w[-l] = np.dot(delta, activations[-l-1].transpose())
        #this is where python says there is an indent error!
        return (nabla_b, nabla_w)

1 个答案:

答案 0 :(得分:0)

通过选择Notepad ++的“编辑”下拉菜单,选择“空白操作”,最后单击“将TAB移至空格”,可以解决此问题。显然,应该在选择触发错误的代码部分之后完成此操作。