项目定位效果展示:
平均定位误差是2.5cm
源代码:
import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision.transforms as transforms
import torch.nn.functional as f
from torch.autograd import Variable
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import mlab
from matplotlib import rcParams
import statsmodels.api as sm
import tkinter as tk
from tkinter import messagebox # import this to fix messagebox error
import pickle
from tkinter import filedialog
import time # 用于计算训练时间
global t1, t2, t3, t4
global file_path_TrL
global file_path_TrD
global file_path_TeL
global file_path_TeD
def file_adress_TrD(t1):
global file_path_TrD
root = tk.Tk()
root.withdraw()
file_path_TrD = filedialog.askopenfilename()
t1.delete(1.0, tk.END) # 清空整个框内的数据
t1.insert('end', str(file_path_TrD))
def file_adress_TrL(t2):
global file_path_TrL
root = tk.Tk()
root.withdraw()
file_path_TrL = filedialog.askopenfilename()
t2.delete(1.0, tk.END)
t2.insert('end', str(file_path_TrL))
def file_adress_TeD(t3):
global file_path_TeD
root = tk.Tk()
root.withdraw()
file_path_TeD = filedialog.askopenfilename()
t3.delete(1.0, tk.END)
t3.insert('end', str(file_path_TeD))
def file_adress_TeL(t4):
global file_path_TeL
root = tk.Tk()
root.withdraw()
file_path_TeL = filedialog.askopenfilename()
t4.delete(1.0, tk.END)
t4.insert('end', str(file_path_TeL))
def save(if_train_new):
# 处理数据集
global file_path_TrL
global file_path_TrD
global file_path_TeL
global file_path_TeD
global t
if if_train_new:
TrainLabel = torch.from_numpy(np.loadtxt(str(file_path_TrL), delimiter=',', dtype=np.float32))
TrainData = torch.from_numpy(np.loadtxt(str(file_path_TrD), delimiter=',', dtype=np.float32))
TestLabel = np.loadtxt(str(file_path_TeL), delimiter=',', dtype=np.float32)
TestData = torch.from_numpy(np.loadtxt(str(file_path_TeD), delimiter=',', dtype=np.float32))
trainlabel = Variable(TrainLabel)
traindata = Variable(TrainData)
testdata = Variable(TestData)
else:
TrainLabel = torch.from_numpy(np.loadtxt('./dataset/TrainLabel_fromrealworld.csv', delimiter=',', dtype=np.float32))
TrainData = torch.from_numpy(np.loadtxt('./dataset/TrainData_fromrealworld.csv', delimiter=',', dtype=np.float32))
TestLabel = np.loadtxt('./dataset/TestLabel_fromrealworld.csv', delimiter=',', dtype=np.float32)
TestData = torch.from_numpy(np.loadtxt('./dataset/TestData_fromrealworld.csv', delimiter=',', dtype=np.float32))
trainlabel = Variable(TrainLabel)
traindata = Variable(TrainData)
testdata = Variable(TestData)
# 定义神经网络
class Net(torch.nn.Module):
def __init__(self):
super(Net, self).__init__()
self.hidden1 = torch.nn.Linear(4, 64)
self.hidden2 = torch.nn.Linear(64, 32)
self.hidden3 = torch.nn.Linear(32, 20)
self.hidden4 = torch.nn.Linear(20, 10)
self.predict = torch.nn.Linear(10, 3)
def forward(self, x):
x = f.relu(self.hidden1(x))
x = f.relu(self.hidden2(x))