Home>
We use deep learning to build a prediction model for road restoration period days.
We have established a neural network with six types of explanatory variables (the degree of road collapse, the height of road embankments, the number of collapsed lanes, etc.) and one type of objective variable (number of days until restoration).
In that case, the inner product calculation error message of the following matrix occurred.
Error messageValueError Traceback (most recent call last)
<ipythoninput4264c8b1648510>in<module>
1 for i in range (epoch):
>2 for j in range (0, x_train.shape [0],
batch_size): w1, b1, w2, b2, w3, b3 = learn (x_train [j: j + batch_size],
t_train [j: j + batch_size],
w1, b1, w2, b2, w3, b3, lr)
3 # Learning shape [00] checks the line size. Here,, 77. Therefore, create a sequence with the step size of the batch size sentence in the range of 0 to 77
<ipythoninput331c9a75ec0d92>in learn (x, t, w1, b1, w2, b2, w3, b3, lr)
10 # Backpropagation (part for calculating the gradient and updating the weight)
11 dy = identity_mean_squared_error_back (y, t)
>12 dz2, dw3, db3 = affine_back (dy, z2, w3, b3)
13 du2 = sigmoid_back (u2)
14 dz1, dw2, db2 = affine_back (du2, z1, w2, b2)
<ipythoninput30e9009ace5ac4>in affine_back (du, z, w, b)
9 # affine transformation gradient
10 def affine_back (du, z, w, b):
>11 dz = np.dot (du, w.T)
12 dw = np.dot (z.T, du)
13 db = np.dot (np.ones (z.shape [0]). T, du)
ValueError: shapes (32,2) and (1,30) not aligned: 2 (dim 1)! = 1 (dim 0)
Applicable source code
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
# affine converted
def affine (z, w, b):
return np.dot (z, w) + b
# affine transformation gradient
def affine_back (du, z, w, b):
dz = np.dot (du, w.T)
dw = np.dot (z.T, du)
db = np.dot (np.ones (z.shape [0]). T, du)
return dz, dw, db
def sigmoid (u):
return 1/(1 + np.exp (u))
#Activation function Sigmoid gradient, intermediate layer gradient
def sigmoid_back (u):
return (1 sigmoid (u)) * sigmoid (u)
def identity (u):
return u#Square sum error: regression problem
def squared_error (y, t):
return 0.5 * np.sum ((y t) ** 2)/y.shape [0]
# Error sum of squares error) + activation function identity function gradient
def identity_mean_s
quared_error_back (y, t):
return (y t)/y.shape [0]
#Learning part
def learn (x, t, w1, b1, w2, b2, w3, b3, lr):
#Forward propagation From input data to obtaining prediction data
u1 = affine (x, w1, b1)
z1 = sigmoid (u1)
u2 = affine (z1, w2, b2)
z2 = sigmoid (u2)
u3 = affine (z2, w3, b3)
y = identity (u3)
#The part that calculates the back propagation gradient and updates the weight
dy = identity_mean_squared_error_back (y, t)
dz2, dw3, db3 = affine_back (dy, z2, w3, b3)
du2 = sigmoid_back (u2)
dz1, dw2, db2 = affine_back (du2, z1, w2, b2)
du 1 = sigmoid_back (u1)
dx, dw1, db1 = affine_back (du1, x, w1, b1)
#Update weight and bias
w1 = w1 lr * dw1
b1 = b1 lr * db1
w2 = w2 lr * dw2
b2 = b2 lr * db2
w3 = w3 lr * dw3
b3 = b3 lr * db3
return w1, b1, w2, b2, w3, b3
def predict (x, w1, b1, w2, b2, w3, b3):
# Forward propagation
u1 = affine (x, w1, b1)
z1 = sigmoid (u1)
u2 = affine (z1, w2, b2)
z2 = sigmoid (u2)
u3 = affine (z2, w3, b3)
y = identity (u3)
return y
#Execution program
#Load earthquake data
df = pd.read_csv ('earthquake_B_traffic.csv')
# Create data Create data Separate explanatory variables/objective variables Separate explanatory variables/objective variables
df_x = df.drop ("regulatory period", axis = 1)
p = df.drop ("damage range", axis = 1)
q = p.drop ("embankment height", axis = 1)
r = q.drop ("landform", axis = 1)
s = r.drop ("banking structure", axis = 1)t = s.drop ("damage form", axis = 1)
u = t.drop ("traffic", axis = 1)
# Divide explanatory variables and objective variables into training data and test data respectively Divide explanatory variables and objective variables into training data and test data respectively
x_train, x_test, t_train, t_test = train_test_split (df_x, t, test_size = 0.3)
#Set number of nodes
d0 = x_train.shape [1]
d1 = 30 # number of nodes in the first layer
d2 = 30 # number of nodes in the second layer
d3 = 1 # output layer
# Initialization of weight 0.1 Random number of 0.1
np.random.seed (8)
w1 = np.random.rand (d0, d1) * 0.001
w2 = np.random.rand (d1, d2) * 0.001
w3 = np.random.rand (d2, d3) * 0.001
#The part where the weight is set to 1 to 0.001
#Bias initialization (
b1 = np.zeros (d1)
b2 = np.zeros (d2)
b3 = np.z
eros (d3)
#Learning rate
lr = 0.5
#Batch size
batch_size = 32
#Learning times
epoch = 1000
#Draw graph list
x = [0, epoch]
y = [0.100]
for i in range (epoch):
for j in range (0, x_train.shape [0],
batch_size): w1, b1, w2, b2, w3, b3 = learn (x_train [j: j + batch_size],
t_train [j: j + batch_size],
w1, b1, w2, b2, w3, b3,
# Learning shape [00 checks the line size. Here, 77. Therefore, create a sequence with the step size of batch size sentence in the range of 0 to 77
By reducing the number of explanatory variables from 6 to 5, the program ran without error.
This refers to a model of character recognition using deep learning.
(32,2)
→ 32: Batch size
→ 2:?
(1,30)
→ 1: Output layer size
→ 30: Number of nodes in the second layer
.

Answer # 1
Related articles
 python  i want to solve the problem that i get the error typeerror: xxxxxxxx takes no arguments
 [python] i don't know how to solve the error
 i want to automatically generate a calculation problem in python
 wordpress  i want to solve the error that the list of product pages is not displayed in woocommerce
 python  saving the calculation result of the correlation coefficient
 the calculation result of python print (1/2) becomes 0
 error when performing numerical calculation with python
 how to solve equations in python
 python reverse polish notation calculation algorithm
 python  i want to restore the result of calculating the inner product with numpy
 python  i want to solve this problem
 python  i want to speed up the calculation of for statements with numpy
 python contour detection¢roid calculation
 multiple classification score calculation errors, python, svm
 python 3x  about array calculation in python
 python  about the average value calculation method of mass calculation
 the following issues were raised in python 3, but i can't solve them
 python  how to solve errors when learning with svm
 python  pass the calculation defined by the function for all combinations of arrays
 cannot solve the problem that java date calculation cannot be displayed by println
Related questions
 python : Error reading csv
 python : Need to parse and convert CSV data to JSON
 Read a specific column from CSV with Python and send an email [Closed]
 Extract specific columns with Python and email
 python : Analysis and selection of unique messages
 python : How to remove data gaps in the set date
 python : Extract CSV data [exclude blanks], data processing
 python : Need help finding the index on the Series object s
 python : ValueError: Input contains NaN, infinity or a value too large for dtype ('float32')
 python : Writes to a csv file through a line
part.
An error occurred when running a program without considering the last "traffic" line of the explanatory variable when the model was originally built with 5 explanatory variables and increased to 6 types. Had occurred.