Python Forum

Full Version: Indentation error in Python code
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
import numpy as np

#Input array
X=np.array([[1,0,1,0],[1,0,1,1],[0,1,0,1]])

#Output
y=np.array([[1],[1],[0]])

#Sigmoid Function
def sigmoid (x):
return 1/(1 + np.exp(-x))

#Derivative of Sigmoid Function
def derivatives_sigmoid(x):
return x * (1 - x)

#Variable initialization
epoch=5000 #Setting training iterations
lr=0.1 #Setting learning rate
inputlayer_neurons = X.shape[1] #number of features in data set
hiddenlayer_neurons = 3 #number of hidden layers neurons
output_neurons = 1 #number of neurons at output layer

#weight and bias initialization
wh=np.random.uniform(size=(inputlayer_neurons,hiddenlayer_neurons))
bh=np.random.uniform(size=(1,hiddenlayer_neurons))
wout=np.random.uniform(size=(hiddenlayer_neurons,output_neurons))
bout=np.random.uniform(size=(1,output_neurons))

for i in range(epoch):

#Forward Propogation
hidden_layer_input1=np.dot(X,wh)
hidden_layer_input=hidden_layer_input1 + bh
hiddenlayer_activations = sigmoid(hidden_layer_input)
output_layer_input1=np.dot(hiddenlayer_activations,wout)
output_layer_input= output_layer_input1+ bout
output = sigmoid(output_layer_input)

#Backpropagation
E = y-output
slope_output_layer = derivatives_sigmoid(output)
slope_hidden_layer = derivatives_sigmoid(hiddenlayer_activations)
d_output = E * slope_output_layer
Error_at_hidden_layer = d_output.dot(wout.T)
d_hiddenlayer = Error_at_hidden_layer * slope_hidden_layer
wout += hiddenlayer_activations.T.dot(d_output) *lr
bout += np.sum(d_output, axis=0,keepdims=True) *lr
wh += X.T.dot(d_hiddenlayer) *lr
bh += np.sum(d_hiddenlayer, axis=0,keepdims=True) *lr

print output
When I run the code above using my Python 3.5.2 interpreter, I get the following error.

File "nn_in_python.py", line 11
return 1/(1 + np.exp(-x))
^
IndentationError: expected an indented block

It says something about line 11 should be indented. But it is indented! So what is wrong and how to fix.

I am very new to python, but not to programming.

I just need to know what is wrong here. this code was taken directly from a tutorial, and it should run fine.

Any help appreciated.Thanks in advance.

respectfully,

ErnestTBass
The code you have posted has no indentation in it at all.
I will find the original source and post it. Sorry about the error.

Respectfully,

ErnestTBass
Easy Ernest, just following the indentation drawbacks and output matrix is shown, as per attachment. Cheers
import numpy as np
 
#Input array
X=np.array([[1,0,1,0],[1,0,1,1],[0,1,0,1]])
 
#Output
y=np.array([[1],[1],[0]])
 
#Sigmoid Function
def sigmoid (x):
	return 1/(1 + np.exp(-x))
 
#Derivative of Sigmoid Function
def derivatives_sigmoid(x):
	return x * (1 - x)
 
#Variable initialization
epoch=5000 #Setting training iterations
lr=0.1 #Setting learning rate
inputlayer_neurons = X.shape[1] #number of features in data set
hiddenlayer_neurons = 3 #number of hidden layers neurons
output_neurons = 1 #number of neurons at output layer
 
#weight and bias initialization
wh=np.random.uniform(size=(inputlayer_neurons,hiddenlayer_neurons))
bh=np.random.uniform(size=(1,hiddenlayer_neurons))
wout=np.random.uniform(size=(hiddenlayer_neurons,output_neurons))
bout=np.random.uniform(size=(1,output_neurons))
 
for i in range(epoch):
 
#Forward Propogation
	hidden_layer_input1=np.dot(X,wh)
	hidden_layer_input=hidden_layer_input1 + bh
	hiddenlayer_activations = sigmoid(hidden_layer_input)
	output_layer_input1=np.dot(hiddenlayer_activations,wout)
	output_layer_input= output_layer_input1+ bout
	output = sigmoid(output_layer_input)
 
#Backpropagation
E = y-output
slope_output_layer = derivatives_sigmoid(output)
slope_hidden_layer = derivatives_sigmoid(hiddenlayer_activations)
d_output = E * slope_output_layer
Error_at_hidden_layer = d_output.dot(wout.T)
d_hiddenlayer = Error_at_hidden_layer * slope_hidden_layer
wout += hiddenlayer_activations.T.dot(d_output) *lr
bout += np.sum(d_output, axis=0,keepdims=True) *lr
wh += X.T.dot(d_hiddenlayer) *lr
bh += np.sum(d_hiddenlayer, axis=0,keepdims=True) *lr
 
print (output)
# ---------- PRINT OUTPUT --------------
# [[0.89400924]
#  [0.90199559]
#  [0.89956253]]
# ---------------- 
Thanks for your help. I assume that you did this based on your knowledge of
Python.

I am new to Python. I know that there are Python indenting programs that can check and correct Python indentation.

There seem to be very few that are on Ubuntu linux.

Do know of one that is one Ubuntu linux? If so please let me know.

Thanks in advance.

Respectfully,

ErnestTBass
Hi Ernest.
In principle, to amend the errors arising during runtime of a python script, I do follow, step by step, the prompt appearing on the screen, like I've done in your code of opening post (named ernest.py):
C:\Training>python ernest.py
  File "ernest.py", line 11
    return 1/(1 + np.exp(-x))
         ^
IndentationError: expected an indented block
So, line 11 should be indented; same story for next ones.

About your question to find software to indent python codes under linux, please be minded that Python is a multi-platform language. What does this mean? That any script (.py) running under Windows can be processed inside Linux O.S., like I've done with yours, as per att'd screenshot http://imgbox.com/lL1OnzOE

In other words, you adjust your well indented code under Windows, and then run it in Ubuntu.

Cheers