Я новичок в Python и нейронных сетях с Tensorflow, поэтому я не знаю, как восстановить сохраненную модель и делать прогнозы. Я собрал данные с трех камер (X_test) робота, следящего за линией, и это скорость колес (слева и справа), установленная симулятором для каждого вида камеры (y_test). Мне нужно обучить нейронную сеть, чтобы прогнозировать скорость вращения колес на основе изображений с камер. Вот код:
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
x_train = np.zeros((2392,3072))
y_train = np.zeros((2392,2))
x_test = np.zeros((2392,3072))
y_test = np.zeros((2392,2))
X_1_train = np.loadtxt('X_Treinamento_3.txt')
X_2_train = np.loadtxt('X_Treinamento_4.txt')
y_1_train = np.loadtxt('Vl_Vr_Treinamento_3.txt')
y_2_train = np.loadtxt('Vl_Vr_Treinamento_4.txt')
X_1_test = np.loadtxt('X_Teste_3.txt')
X_2_test = np.loadtxt('X_Teste_4.txt')
y_1_test = np.loadtxt('Vl_Vr_Teste_3.txt')
y_2_test = np.loadtxt('Vl_Vr_Teste_4.txt')
x_train = np.concatenate((X_1_train[4:1200,:],X_2_train[4:1200,:]))/255
x_test = np.concatenate((X_1_test[4:1200,:],X_2_test[4:1200,:]))/255
y_train = np.concatenate((y_1_train[4:1200,:],y_2_train[4:1200,:]))
y_test = np.concatenate((y_1_test[4:1200,:],y_2_test[4:1200,:]))
n_inputs = 32*32*3 #3 images 32x32 pixels
n_hidden_1 = 300 # 1st layer number of neurons
n_hidden_2 = 100 # 2nd layer number of neurons
n_outputs = 2
tf.compat.v1.disable_eager_execution()
X = tf.compat.v1.placeholder("float",[None,n_inputs])
Y = tf.compat.v1.placeholder("float",[None,n_outputs])
weights = {
'h1': tf.Variable(tf.random.normal([n_inputs, n_hidden_1],stddev=0.1)),#4 inputs 10 nodes in h1 layer
'h2': tf.Variable(tf.random.normal([n_hidden_1, n_hidden_2],stddev=0.1)),# 10 nodes in h2 layer
'out': tf.Variable(tf.random.normal([n_hidden_2, n_outputs],stddev=0.1))# 1 ouput label
}
biases = {
'b1': tf.Variable(tf.random.normal([n_hidden_1])),
'b2': tf.Variable(tf.random.normal([n_hidden_2])),
'out': tf.Variable(tf.random.normal([n_outputs]))
}
def neural_net(x):
#hidden layer 1
layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
layer_1 = tf.nn.tanh(layer_1)#activation
#hideen layer 2
layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])
layer_2 = tf.nn.tanh(layer_2)#activation
# output layer
out_layer = tf.matmul(layer_2, weights['out']) + biases['out']
return (out_layer)
Y_hat=neural_net(X)
loss_op=tf.losses.mean_squared_error(Y,Y_hat)#loss function
optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate=1e-3) # define optimizer # play around with learning rate
train_op = optimizer.minimize(loss_op) # minimize losss
init = tf.compat.v1.global_variables_initializer()
epoch=2000
with tf.compat.v1.Session() as sess:
sess.run(init)
saver = tf.compat.v1.train.Saver()
for i in range(0,epoch):
sess.run(train_op,feed_dict={X:x_train,Y:y_train})
loss=sess.run(loss_op,feed_dict={X:x_train,Y:y_train})
if(i%100==0):
print("epoch no "+str(i),(loss))
pred=sess.run(Y_hat,feed_dict={X:x_test})
saver.save(sess, "output")
Итак, мне нужна ваша помощь, чтобы проверить, правильно ли я сохраняю модель, если нет, то как ее сохранить и после того, как загрузить и прогнозировать с сохраненной моделью.