Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决或识别可以在张量板图上看到的神经网络问题_Python_Tensorflow_Machine Learning_Neural Network_Keras - Fatal编程技术网

Python 如何解决或识别可以在张量板图上看到的神经网络问题

Python 如何解决或识别可以在张量板图上看到的神经网络问题,python,tensorflow,machine-learning,neural-network,keras,Python,Tensorflow,Machine Learning,Neural Network,Keras,我用5000个数据点创建了自己的数据集。利用这些数据,我建立了一个网络,用一个隐藏层进行训练 输入层包含3个输入神经元 隐藏层有100个神经元 输出层有3个神经元 我对隐藏神经元使用切线乙状结肠(tanh)激活函数,对输出层使用线性激活函数。我使用张量板来直观显示结果的准确性和损失 问题是我的图表(看图表)非常模糊,没有什么意义。我的准确率不会超过40%。网络似乎也不倾向于学习 我的假设是,我的数据输入方法存在问题。请帮帮我 运行代码后,您是否清理了日志目录?如果你不这样做,它可能会导致混乱

我用5000个数据点创建了自己的数据集。利用这些数据,我建立了一个网络,用一个隐藏层进行训练

  • 输入层包含3个输入神经元
  • 隐藏层有100个神经元
  • 输出层有3个神经元
我对隐藏神经元使用切线乙状结肠(tanh)激活函数,对输出层使用线性激活函数。我使用张量板来直观显示结果的准确性和损失

问题是我的图表(看图表)非常模糊,没有什么意义。我的准确率不会超过40%。网络似乎也不倾向于学习

我的假设是,我的数据输入方法存在问题。请帮帮我


运行代码后,您是否清理了日志目录?如果你不这样做,它可能会导致混乱的重叠曲线。耶。我总是在python终端中运行logdir,每次运行代码时都会得到一个新的服务器地址。服务器地址与此无关,我指的是存储元文件和检查点文件的实际文件夹。你在运行代码之前删除了所有文件吗?没有,我现在就删除了。它成功了。我在我的代码中发现了两个限制训练的错误:(1)混乱的图形是因为数据乱序而出现的,随机。乱序(数据)随机。乱序(输出)(2)Y轴的问题(一个历元有几个丢失/acc值),如果你没有将数据分割为列车数据(数据集的80%),测试数据(占数据集的10%)和评估数据(占数据集的10%)。当您进行这些更正时,您可以在tensorboard中得到一个漂亮且信息丰富的图表
import random
import math
import csv
import numpy as np
from matplotlib import pyplot as plt
from sklearn import preprocessing
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.callbacks import TensorBoard


linkLength = 2
def Xe (a,b,c):
    return linkLength*math.cos(a)+linkLength*math.cos(a+b)+linkLength*math.cos(a+b+c)
def Ye (e,f,g):
    return linkLength*math.sin(e) + linkLength*math.sin(e + f) + linkLength*math.sin(e + f + g)
def tita (h,i,j):
      return math.degrees(h)+math.degrees(i)+math.degrees(j)

Q1 = []
Q2 = []
Q3 = []
posX = []
posY = []
titaEnd = []

# data set creation 
for i in range (0,5000):
    q1= round(random.uniform(0,math.pi),2)
    q2= round(random.uniform(-math.pi,0),2)
    q3= round(random.uniform(-math.pi/2, math.pi/2), 2)
    Q1.append(q1)
    Q2.append(q2)
    Q3.append(q3)
    posX.append(Xe(q1,q2,q3))
    posY.append(Ye(q1,q2,q3))
    titaEnd.append(tita(q1,q2,q3))



for i in range(0,len(posX)):
    plt.plot([posX[i],posX[i]+0.2*math.cos(math.radians(titaEnd[i]))],[posY[i],posY[i]+0.2*math.sin(math.radians(titaEnd[i]))],'k-')

plt.scatter(posX,posY)
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.title("data set of 1000 possible endeffector positions and orientations")
plt.show()
dataMat =np.c_[Q1,Q2,Q3,posX,posY,titaEnd]
#removing duplicated end effeector positions
for i in range (0,4999):
    check1 = dataMat[i,3]
    check2 = dataMat[i,4]
    check3 = dataMat[i,5]
    for j in range (0,4999):
        if i != j:
            #print(i,j,'checking..')
            if (dataMat[j,3] == check1 and dataMat[j,4] == check2 and dataMat[j,5] == check3):
                print(i,j,dataMat[j,3],dataMat[j,4],dataMat[j,5])
#Preprocessing
MinMaxNorm = preprocessing.minmax_scale(dataMat,(-1,1))

plt.scatter(MinMaxNorm[:,3],MinMaxNorm[:,4])
plt.title("Preprocessed data")
plt.show()

#print(MinMaxNorm)

data =MinMaxNorm[:,[3,4,5]]
output =MinMaxNorm[:,[0,1,2]]


#Building NN

random.shuffle(data)
random.shuffle(output)

model = keras.Sequential()
model.add(keras.layers.Dense(100, activation ='tanh'))
model.add(keras.layers.Dense(3, activation ='linear'))


NAME = "Trajectry Tracking"
tensorboard = TensorBoard(log_dir="logs/{}".format(NAME))

model.compile(optimizer=tf.train.AdamOptimizer(0.01),loss='mse',metrics=['accuracy'])       # mean squared error

model.fit(data,output, epochs=20, batch_size =40, callbacks=[tensorboard])

model.evaluate(data,output)

#_Tensor Board
#tensorboard --logdir=logs/`