[愚蠢工科女求助]同样的neural net代码在一台电脑上能跑,另一台报错

sinat_33946337 2016-12-04 06:07:19
报错信息为:
Exception in thread "main" java.lang.NullPointerException
at trypart3.Part1.readInput(Part1.java:100)
at trypart3.Part1.<init>(Part1.java:94)
at trypart3.Part1.main(Part1.java:275)

相同代码在另一台电脑上不报错,正常运行,请问是eclipse配置的问题还是什么问题呢?

程序没有贴上来,如果需要,我会po出
...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
public double outputSet[];这玩意没初始化造成的吧
yakesun 2016-12-05
  • 打赏
  • 举报
回复
这代码贴的也太实诚啦,检查空指针异常,数组长度问题啊,对象未实例化啊什么的!
sinat_33946337 2016-12-05
  • 打赏
  • 举报
回复
谢谢大家,实在太马虎了,是因为输入的文件有问题。。。
sinat_33946337 2016-12-05
  • 打赏
  • 举报
回复
代码如下,是关于神经网络算法的代码。 错误在输入层和输出层的地方,红色字体是有报错的行 public class Part1 { public double input[] = new double[8]; public double eachhidSum[] = new double[15]; public double outSum[] = new double[1]; public double eachhidoutSignal[] = new double[15]; public double outSignal[] = new double[1]; public double outError[] = new double[1]; public double hiddenError[] = new double[15]; public double outhidDelta[] = new double[15]; public double hidinDelta[][] = new double[15][8]; public double outhidSignal[] = new double[15]; public double outhidBiasDelta[] =new double[1]; public double hidinBiasDelta[] = new double[15]; public double inhidwc[][]=new double[15][8]; public double hidoutwc[][]= new double[1][15]; public double[] inhidbiaswc = new double[1]; public double[] hidoutbiaswc = new double[1]; public double bias[] = {1.0,1.0}; public double[][] inhidw = new double[15][8]; public double[] inhidbiasw = new double[1]; public double[][] hidoutw = new double[1][15]; public double[] hidoutbiasw = new double[1]; public double learningRate=0.2; public double mon=0.0; public double inputSet[][]; public double outputSet[]; public double totalError=0.0; //public double inputHeading[] ={-1,-0.5,0.5,1}; //public double inputBearing[] = {-1,1}; public double inputEnergy[] = {-1,1}; public double inputDistance[] = {-1,1}; public double inputX[] = {-1,-0.5,0.5,1}; public double inputY[] = {-1,0,1}; public double inputAction1[] = {0,0,0,1}; public double inputAction2[] = {0,0,1,0}; public double inputAction3[] = {0,1,0,0}; public double inputAction4[] = {1,0,0,0}; public void initializeWeight(){ Random random = new Random(); for(int j=0;j<15;j++){ for(int i=0;i<8;i++){ inhidw[j][i]=random.nextDouble()-0.5; inhidwc[j][i]=0.0; } } for(int k=0;k<1;k++){ for(int j=0;j<15;j++){ hidoutw[k][j]=random.nextDouble()-0.5; hidoutwc[k][j]=0.0; } } for(int j=0;j<1;j++){ inhidbiasw[j]=random.nextDouble()-0.5; inhidbiaswc[j]=0.0; } for(int k=0;k<1;k++){ hidoutbiasw[k]=random.nextDouble()-0.5; hidoutbiaswc[k]=0.0; } return; } public double sigmoidBinary(double x){ return 1.0/(1.0+Math.exp(-x)); } public double sigmoidBipolar(double x){ return 2.0/(1.0+Math.exp(-x))-1; } public Part1(){ String filepath =("/Users/my/Desktop/lut_vs_crazy.txt"); inputSet = readInput(); outputSet = readLUT(filepath); } public double[][] readInput(){ double inputrowvalue[][] = new double[outputSet.length][8]; double statevalue[][] = new double[outputSet.length][4]; double actionvalue[][] = new double[outputSet.length][4]; //double Heading=0,Bearing=0,Energy=0,Distance=0,X=0,Y=0; double Energy=0,Distance=0,X=0,Y=0; int x = 0; //for(int i=0;i<4;i++){ // Heading = inputHeading[i]; //for(int j=0;j<2;j++){ //Bearing = inputBearing[j]; for(int k=0;k<2;k++){ Energy = inputEnergy[k]; for(int l=0;l<2;l++){ Distance = inputDistance[l]; for(int n=0;n<4;n++){ X = inputX[n]; for(int m=0;m<3;m++){ Y = inputY[m]; double staterowvalue[] = {Energy,Distance,X,Y}; statevalue[x] = staterowvalue; x++; } } } } // } // } for(int i=0;i<outputSet.length/4;i++){ actionvalue[0+i*4] = inputAction1; actionvalue[1+i*4] = inputAction2; actionvalue[2+i*4] = inputAction3; actionvalue[3+i*4] = inputAction4; } for(int i=0;i<outputSet.length;i++){ System.arraycopy(statevalue[i], 0, inputrowvalue[i], 0, statevalue[i].length); System.arraycopy(actionvalue[i], 0, inputrowvalue[i],statevalue[i].length, actionvalue[i].length); } System.out.println(inputrowvalue); return inputrowvalue; } public double[] readLUT(String filepath){ File file = new File(filepath); List<String> list =new ArrayList<String>(); double[] Lut = null; try { BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while((line= br.readLine()) != null){ list.add(line); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Lut = new double[list.size()]; for(int i=0;i<list.size();i++){ String a = list.get(i); Lut[i] = Double.parseDouble(a); } return Lut; } public void forward(double[] input){ for(int j=0;j<15;j++) { double sum=0.0; for(int i=0;i<8;i++){ // System.out.println(input[i]); sum += input[i]*inhidw[j][i]; } sum+=+bias[0]*inhidbiasw[0]; //System.arraycopy(sum, 0, eachhidSum, 0, 4); //eachhidSum[j] = sum[j]; //+bias[0]*inhidbiasw[j]; eachhidoutSignal[j]=sigmoidBipolar(sum);//Zj //eachhidoutSignal[j]=sigmoidBinary(sum); } for(int k=0;k<1;k++){ double sum=0.0; for(int j=0;j<15;j++){ sum += eachhidoutSignal[j]*hidoutw[k][j]; } sum +=bias[1]*hidoutbiasw[0]; outSignal[k] = sigmoidBipolar(sum);//Yk //outSignal[k] = sigmoidBinary(sum); } return; } public void backPropagation(double target,double[] input){ for(int k=0;k<1;k++){ outhidBiasDelta[k]=0.0; outError[k]=target-outSignal[k]; //outhidBiasDelta[k] =outError[k]*(1.0-outSignal[k])*outSignal[k]; outhidBiasDelta[k] =outError[k]*(1.0-outSignal[k])*(1+outSignal[k])/2; } for (int j=0; j<15; j++) { hidoutwc[0][j]=mon*hidoutwc[0][j]+outhidBiasDelta[0]*eachhidoutSignal[j]*learningRate; hidoutw[0][j]+= hidoutwc[0][j]; } hidoutbiaswc[0]=mon*hidoutbiaswc[0]+outhidBiasDelta[0]*bias[1]*learningRate; hidoutbiasw[0]+=hidoutbiaswc[0]; for(int j=0;j<15;j++){ hiddenError[j]=0.0; //hiddenError[j] = (1-eachhidoutSignal[j])*eachhidoutSignal[j]*outhidBiasDelta[0]*hidoutw[0][j]; hiddenError[j] = (1-eachhidoutSignal[j])*(1+eachhidoutSignal[j])*outhidBiasDelta[0]*hidoutw[0][j]/2; } for(int j=0; j<15; j++) { for (int i=0;i<8; i++) { inhidwc[j][i]=mon*inhidwc[j][i]+hiddenError[j]*input[i]*learningRate; inhidw[j][i]+=inhidwc[j][i]; } inhidbiaswc[0]=mon*inhidbiaswc[0]+hiddenError[j]*bias[0]*learningRate;; inhidbiasw[0]+= inhidbiaswc[0]; } return; } public void train() { int epochs=0; while(totalError()>0.05) { for (int j=0; j<outputSet.length; j++) { for (int i=0; i<8; i++) { input[i]=inputSet[j][i]; } forward(input); backPropagation(outputSet[j],input); } System.out.println("E:"+totalError()); epochs++; } System.out.println("epoch:"+epochs); return; } public double totalError() { totalError = 0.0; for (int j=0; j<outputSet.length; j++) { for (int i=0; i<8; i++) { input[i]=inputSet[j][i]; } forward(input); totalError += Math.pow((outputSet[j]-outSignal[0]), 2); } totalError=totalError/2; return totalError; } public static void main(String[] args) { Part1 neuralnet = new Part1(); neuralnet.initializeWeight(); neuralnet.train(); } }
爱睡觉的阿狸 2016-12-04
  • 打赏
  • 举报
回复
贴下程序吧。
wuyi_51 2016-12-04
  • 打赏
  • 举报
回复
空指针异常,还是希望能看下代码
PyTorch版的YOLOv8支持高性能的实时实例分割。TensorRT是针对英伟达GPU的加速工具。ONNX (Open Neural Network Exchange) 作为一个开放的网络模型中间表示(IR)格式,提供了跨框架兼容性。可以方便不同的框架轻松地交换模型,有助于框架之间的互操作性。本课程讲述如何对YOLOv8实例分割的PyTorch权重文件转成ONNX格式并进行TensorRT加速部署。相比与直接使用TensorRT API构建推理引擎,本方法更具灵活性,可用于修改YOLOv8网络架构后的模型部署。课程亮点包括:YOLOv8实例分割的PyTorch权重文件转成ONNX,再转成TensorRT 推理引擎支持在GPU上端到端TensorRT加速部署,包括预处理(图像resize, 归一化)、网络推理、后处理(非极大抑制) 均在GPU上执行支持FP16加速提供C++和Python的TensorRT加速命令接口分别在Windows和Ubuntu系统上做YOLOv8的ONNX转换及TensorRT部署演示支持图片、图片文件夹、视频文件的TensorRT的加速推理提供YOLOv8的ONNX转换及TensorRT加速部署代码代码解析文档实测推理速度提高2倍以上。课程内容包括:原理篇(YOLOv8网络架构与组件、TensorRT基础、ONNX基础、CUDA编程方法)实践篇(Windows和Ubuntu系统上的ONNX模型转换及TensorRT加速部署流程演示)代码解析篇(YOLOv8的ONNX模型转换及TensorRT加速的代码解析) 

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧