Output processing function REMOVECONSTANTROWS is not supported with GPU.
13 次查看(过去 30 天)
显示 更早的评论
Hello,
I am following MATLAB tutorial on neural networks with GPU parallelization and I am not able to use my own data to start the training process, only the example data set works. The code is this:
%[xa,ta] = house_dataset;
[X_Train,Y_Train,T_Train] = loadData({'Data2008.mat'}, 0);
% Year to be predicted
[X_PredYear,Y_PredYear,T_PredYear] = loadData('Data2009.mat', 0);
xg = nndata2gpu(X_Train);
tg = nndata2gpu(Y_Train);
net1 = feedforwardnet(10);
net2 = configure(net1,X_Train,Y_Train); % Configure with MATLAB arrays
net2 = train(net2,xg,tg); % Execute on GPU with NNET formatted gpuArrays
yg = net2(xg); % Execute on GPU
y = gpu2nndata(yg); % Transfer array to local workspace
When I use the house data_set, everything works fine. However, when I load my data from the .mat file (X_Train and Y_Train are columns extracted from a table, so they are basically 2D arrays), I get the error "Output processing function REMOVECONSTANTROWS is not supported with GPU." in the line:
net2 = train(net2,xg,tg);
As if this extra functionality "REMOVECONSTANTROWS" was added to the arrays for some reason. I actually tried a "dumb" approach to copy each element from X_Train and Y_Train to double arrays and pass in the5se arrays to the function nndata2gpu but the error persists. Could anyone tell what is preventing me to use my input data in this code?
Thank you.
0 个评论
采纳的回答
Amanjit Dulai
2016-4-25
The error message you are getting suggests that there are rows in your output data which are constant. Without knowing what your data is, it's hard to know for sure, but here are a few suggestions:
1) You mentioned that X_Train and Y_Train are columns from a table. Remember, the 'train' function in the Neural Network Toolbox requires that your data is formatted so that each column is an example (e.g. X_Train should be a matrix where the number of columns is the number of training samples, and the number of rows is the size of each training sample). The same applies to Y_Train. From the error, I would guess that the format for Y_Train is wrong.
2) You could switch off the output function 'removeconstantrows', although your network might encounter issues when training if some of the output data rows are constant. You can remove the output function 'removeconstantrows' with the following command:
net.output.processFcns = {'mapminmax'};
3 个评论
Lindsay Wong
2020-1-22
Thanks. I meet the same error and found that the output column is constant. Problem solved.
Yunyu Hu
2020-3-1
I also had this problem and remove the constant input columns , then problem solved
更多回答(1 个)
Remington Reid
2019-9-10
I ran into the same issue but required a slightly different solution. I was training a 2 layer feedforward net that produces a single output. The input training data dimensions were 6 x N and the output training dimensions were 1 x N. The output data was definitely not constant. I tried filtering repeated values in the output to be safe with no luck. Both input and output were classed as 'double'. Disabling the REMOVECONSTANTROWS option worked but I had to disable it both on the input and on the output.
net.input.processFcns = {'mapminmax'};
net.output.processFcns = {'mapminmax'};
In my case network training and performance did not seem to suffer, but since there were no constant rows I suppose that isn't to surprising. Thank you for the instructions to disable the option!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!