Multi parameter input multiparameter (x,y graph) output model for prediction

1 回表示 (過去 30 日間)
alex bradley
alex bradley 2024 年 11 月 26 日
コメント済み: alex bradley 2024 年 11 月 26 日
Good afternoon,
I have a dataset containing 1000 different scenarios of various materials with varying material properties and loading; the data also contains the expected number of cycles (life). My goal is to create a map between material properties and their respective wholer curve e.g (load vs cycles to failure). For further background the data was constructed using a latin hypercube sampling methodology.
The ideal being something like
(val prop1,valprop2...valpropn) -> Load, Life
5 5000
10 3000
16 1000
The inverse of this is also acceptable e.g
Load, Life -> (val prop1,valprop2...valpropn)
5 5000
10 3000
16 1000
My problem is Load and Life are linked and can't be seperated. I have thought of this problem in a few different ways, a straight regression problem which didn't perform particularly well. I have also been trying a sequence to sequence approach however, most literature in matlab points me down the LSTM route which often focuses on sequence to one or; sequence to sequence with a single feature. I have some sample code below that I have been trying but I get a strange error that appears incomplete. Any thoughts on how to do this would be greatly appreciated.
In the below example: Material Parameters is 1000 samples of a single row containing 10 materail propeties as features
In this trial Load Life is intended as an XY plot where the first 5 enteries are x values and the next 5 are y values. Not sure if this is best practice or not I was just trying to get soemthing to work....
MaterialParameters=reshape(MaterialParameters, [10, 1, 1000]);
LoadLife=reshape(LoadLife, [1, 10, 1400]);
% Define input and output sequences (non-time series)
inputSequence = MaterialParameters; % 10 features, 1 channel, 100 sequences
outputSequence = LoadLife; % 5 features, 1 channel, 100 sequences
% Define the layers of the sequence-to-sequence network
layers = [
sequenceInputLayer(10) % Input layer for 10 features
lstmLayer(50, 'OutputMode', 'sequence') % LSTM layer with 50 hidden units
lstmLayer(50, 'OutputMode', 'sequence') % Second LSTM layer
fullyConnectedLayer(10) % Fully connected layer for 10 output features
regressionLayer]; % Regression layer for continuous output
% Specify training options
options = trainingOptions('adam', ...
'MaxEpochs', 100, ...
'MiniBatchSize', 20, ...
'Verbose', 1, ...
'Plots', 'training-progress');
% Train the network
net = trainNetwork(inputSequence, outputSequence, layers, options);
Error:
Error using trainNetwork
The training sequences are of feature dimension 10 1 but the input layer expects sequences of feature dimension 10.
Error in MaterialExtractor (line 325)
net = trainNetwork(inputSequence, outputSequence, layers, options);
Any help would be greatly appreciated!

回答 (1 件)

Image Analyst
Image Analyst 2024 年 11 月 26 日
Sounds like a partial least squares situation since variables are related. However, why don't you give the "Regression Learner" app a try. It's on the Apps tab of the tool ribbon.
  1 件のコメント
alex bradley
alex bradley 2024 年 11 月 26 日
I have tried this actually and it appears that the regression learner app can only do multi input single output analyses. For me I think I need to be able to output the whole array

サインインしてコメントする。

製品


リリース

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by