q*******n 发帖数: 360 | 1 【 以下文字转载自 Joke 讨论区 】
发信人: qgmzztmdn (qgmzztmdn), 信区: Joke
标 题: 求教:matlab
发信站: BBS 未名空间站 (Sun Dec 1 19:05:02 2019, 美东)
matlab小白一个,求教请各位大虾帮忙看一下,出了什么问题,应该怎么处理?谢谢!
1,使用matlab2019a,现在系里的版本就是这个。
2,为什么采用以下这两种方式(方式A和方式B)运行同样的一个神经网络LSTM(包括输
入数据还有设置等等都是一模一样的!),但是得到的答案却不一样。
注:1,对于第一组数据(n=1)方式A和方式B是一样的,但是从第二组数据以后(n=2以
后,包括n=2)的所有结果,方式A和方式B全都不一样了:(
2,自己测试的结论是:matlab启动后的第一次神经网络计算都没有问题,但是让
matlab不重启,接着计算这个神经网络,就出问题了,即使已经清空了各种变量 (麻烦
大虾看看,是不是还有啥鬼咚咚还没有清空啊:(
---------------------------------------------------------
方式A: 一次性地完成这1500组数据,即启动matlab一次,不用关闭,就可以一组接着
一组地一次性地完成这1500组数据的lstm运算
for n = 1:1500
load ('tdata.txt')
dataTrain=tdata(n,:);
********************************
同样一个LSTM神经网络的code (中间没有变量n)
*******************************
Voutput=[num2str(n), '.txt'];
csvwrite(Voutput, xx, yy, zz, vv);
*/以下只是根据clear命令说明文件中的所有选项都写上了,目的是想为下一个循环清
空所有的东西。
*/麻烦大虾看看,是不是还有啥鬼咚咚还没有清空啊:(
close all hidden;
clear
clear all;
clear classes;
clear functions;
clear global;
clear import;
clear java;
clear mex;
clear variables;
clearvars;
clearvars all;
end
完成方式A
--------------------------------------------------------
方式B 单独运行一组数据,就关闭matlab;然后再启动matlab,再单独运行第二数据,
依次类推,这样需要不断地关闭和启动matlab 1500次:(
load ('data.txt')
dataTrain=tdata(1,:); */这里是第一组数据的例子,等第一组数据算完之后,一定要
关闭matlab, 再重启matlab, 计算第二组的时候,把该数据1改为2。依次类推计算其他
1500组。
********************************
同样一个LSTM神经网络的code (中间没有变量n)
*******************************
csvwrite(Voutput1, xx, yy, zz, vv); */这里是第一组数据的例子,等第一组数据算
完之后,一定要关闭matlab, 再重启matlab, 计算第二组的时候,把该数据1改为2。依
次类推计算其他1500组。
完成方式B
------------------------------------------------ |
m***n 发帖数: 12188 | 2 随机数种子没初始化?
电脑是deterministic的,不存在随机性
随机数也是伪随机数
每两次从头运行,应该是一样的结果 |
q*******n 发帖数: 360 | 3 什么意思?我不是学CS的,不懂,麻烦您详细解释一下,好吗? 这里没有随机数的问
题啊,程序里没有随机数。
【在 m***n 的大作中提到】 : 随机数种子没初始化? : 电脑是deterministic的,不存在随机性 : 随机数也是伪随机数 : 每两次从头运行,应该是一样的结果
|
F**0 发帖数: 5004 | 4 clear all 命令之后, 你的 tdata矩阵不是也被清空,第二步循环应该报错才对
我的MATLAB版本是 7 |
q*******n 发帖数: 360 | 5 哦,不好意思啊,我测试了很多不同的clear, 这个版本应该是这样的: tdata被每次清
空后,又再次读入。不好意思啊,马上改过来。
for n = 1:1500
load ('tdata.txt')
【在 F**0 的大作中提到】 : clear all 命令之后, 你的 tdata矩阵不是也被清空,第二步循环应该报错才对 : 我的MATLAB版本是 7
|
F**0 发帖数: 5004 | 6 不用客气
matlab 本身有些问题,不是完全值得信任
不同的版本有不同的问题
【在 q*******n 的大作中提到】 : 哦,不好意思啊,我测试了很多不同的clear, 这个版本应该是这样的: tdata被每次清 : 空后,又再次读入。不好意思啊,马上改过来。 : for n = 1:1500 : load ('tdata.txt')
|
q*******n 发帖数: 360 | 7 谢谢您看的非常仔细!
您对我这个问题有什么看法或者解决办法吗?我们系里只有matlab,没有别的,再说,
别的我也不会啊:(
【在 F**0 的大作中提到】 : 不用客气 : matlab 本身有些问题,不是完全值得信任 : 不同的版本有不同的问题
|
S***a 发帖数: 934 | 8 建议打印计算中间过程的数据看是具体哪一步出现不同,这是最快的debug方法 |
F**0 发帖数: 5004 | 9 我经验多一点, 你一说运行结果不一样,大概就是两个原因(其他人说的随机数,
clear all 没真正清空变量)
matlab 只能凑合着用
比如你发现这个版本的 clear all 有问题,就绕过去
没好的办法, 所以我坚持用 matlab 7, 因为旧代码在新版本会出各种问题
【在 q*******n 的大作中提到】 : 谢谢您看的非常仔细! : 您对我这个问题有什么看法或者解决办法吗?我们系里只有matlab,没有别的,再说, : 别的我也不会啊:(
|
q*******n 发帖数: 360 | 10 嗯嗯,对了,那个随机数是怎么回事啊?molen还没有回我呢,能麻烦您给我简单说一
下吗?如果您没有时间,给我一个链接也行,先谢谢啦。
【在 F**0 的大作中提到】 : 我经验多一点, 你一说运行结果不一样,大概就是两个原因(其他人说的随机数, : clear all 没真正清空变量) : matlab 只能凑合着用 : 比如你发现这个版本的 clear all 有问题,就绕过去 : 没好的办法, 所以我坚持用 matlab 7, 因为旧代码在新版本会出各种问题
|
F**0 发帖数: 5004 | 11 伪随机数种子,就是不是真正的随机。 所以结果没有变化(只初始化的时候随机了一
次)。
很多编程语言都有这个问题
【在 q*******n 的大作中提到】 : 嗯嗯,对了,那个随机数是怎么回事啊?molen还没有回我呢,能麻烦您给我简单说一 : 下吗?如果您没有时间,给我一个链接也行,先谢谢啦。
|
q*******n 发帖数: 360 | 12 哦,对对,应该和初始化有关,那么怎么解决这个问题啊?
【在 F**0 的大作中提到】 : 伪随机数种子,就是不是真正的随机。 所以结果没有变化(只初始化的时候随机了一 : 次)。 : 很多编程语言都有这个问题
|