This data set consists of thousands to hundreds of thousands of input output pairs in which both the input and the output are vectors of floating point numbers.
I see...
You must have a lot of memory on that computer...
Posted 25 October 2006 - 06:39 PM
This data set consists of thousands to hundreds of thousands of input output pairs in which both the input and the output are vectors of floating point numbers.
Posted 25 October 2006 - 06:47 PM
Yep. I've got 4GB on my workstation and have access to a server with 24GB of RAM. Unfortunately, LabVIEW is limited to just under 2GB per instance so I play some games with ramdisks and file I/O when dealing with large data sets. I'm really looking forward to the 64-bit version of LabVIEW.I see...
You must have a lot of memory on that computer...
Posted 25 October 2006 - 06:53 PM
Have you considered using random numbers with a seed specified, e.g. by using Uniform White Noise.vi. This way you could run exactly the same sequence of "random" tests with a new model....I include the option to process the training set in a random order each time it is used. To do this random processing, I implemented the random permutation in LabVIEW.
Posted 25 October 2006 - 06:36 PM
I have implemented a number of artificial neural network models in LabVIEW. While performing stochastic optimization, i.e. "training the neural networks", I will often process the "training set" many times. This data set consists of thousands to hundreds of thousands of input output pairs in which both the input and the output are vectors of floating point numbers. I include the option to process the training set in a random order each time it is used. To do this random processing, I implemented the random permutation in LabVIEW.Now I'm curious. In my 10 years or so of technical computing, I'm having trouble thinking of many times where I've come across a need for randomizing an array. A LabVIEW implementation of Boggle that I did on a long flight, and a card shuffling exercise in college come to mind, and obviously those don't need to be really fast.
So, just out of curiosity, what type of real applications require such fast and efficient randomization?
Posted 27 October 2006 - 01:38 PM
Good point. The numbers I put in the spreadsheet were derived from my IBM Celeron laptop. My P4 desktop seems to execute the implicit faster.I ran this on both LV 7.1 and 8.2 with similar behavior. I wonder if it's CPU-dependent somehow -- mine's an AMD Athlon XP...
Maybe EVERYBODY gets to be right! :thumbup:
-Kevin P.
Posted 27 October 2006 - 01:33 PM
Depending on the original and final data types, I saw that the explicit coercion was between 5 and 35% faster than the automatic coercion (i.e. coersion dot). See attached data excel doc.
Posted 26 October 2006 - 12:13 AM
It should help if you have multiple coercion dots on the same wire.
Can we please get a definative answer from NI on this one?
Posted 26 October 2006 - 01:35 AM
Hmm.... I decided to check this out a bit more, using variations of the attached vi.
This answer is not definative... I know that the above is one situation where explicit coercion helps. There may be others.
Posted 21 October 2006 - 01:14 AM
Posted 21 October 2006 - 08:02 PM
Instead of "assumed to be positive I32", why not use an unsigned 32-bit? Then you don't have to worry about someone passing a negative.This SubVI takes an assumed-to-be-positive I32 integer n as input
....
this SubVI does not perform any input validation or error checking.
Posted 23 October 2006 - 12:21 AM
Sounds like a good reason for a 1.0.1 release.Instead of "assumed to be positive I32", why not use an unsigned 32-bit? Then you don't have to worry about someone passing a negative.
Posted 23 October 2006 - 06:30 AM
I think that the randperm function in MATLAB generates numbers between 1 and N....It is equivalent in function to the 'randperm' command in MATLAB...
Posted 23 October 2006 - 07:32 PM
In my applications, this function is used to generate an array of indices that, in turn, are used to randomize the order in which data is processed from another array. I believe that LabVIEW coerces array indices to I32, so I want to use I32 for the output array. A question then is whether to use U32 for the input which could theoretically cause a problem if the user decides to input a size larger than 2147483647. The answer to that question is no because a value of 2147483647 generates a "Memory Full" error in LabVIEW, so this issue is irrelevant until the 64-bit version of LabVIEW is released.Instead of "assumed to be positive I32", why not use an unsigned 32-bit? Then you don't have to worry about someone passing a negative.
Yep. MATLAB does generate numbers between 1 and N because MATLAB indexes arrays starting with 1 instead of 0. I can add a recommended boolean input to switch the indexing to 1...N.I think that the randperm function in MATLAB generates numbers between 1 and N.
Maybe add an option to select if the sequence is zero indexed or not?
/J
Posted 23 October 2006 - 07:35 PM
Posted 23 October 2006 - 07:45 PM
Sounds good, and it was a very nice implementation.Yep. MATLAB does generate numbers between 1 and N because MATLAB indexes arrays starting with 1 instead of 0. I can add a recommended boolean input to switch the indexing to 1...N.
Posted 23 October 2006 - 08:34 PM
Your solution requires at least three times as much allocated memory. It might also be slower (which one might or might not care about). I've learned to optimize for memory allocation in LabVIEW to get maximum performance out of my applications.Forgive me if I'm being dense here, but how is that different from doing this?
Posted 23 October 2006 - 08:39 PM
Your solution requires at least three times as much allocated memory. It might also be slower (which one might or might not care about). I've learned to optimize for memory allocation in LabVIEW to get maximum performance out of my applications.
Posted 23 October 2006 - 08:41 PM
Forgive me if I'm being dense here, but how is that different from doing this?
Posted 23 October 2006 - 08:46 PM
I'll try. I do still have 8.0.1 and 7.1 running on my primary workstation. I'll have to get back to this later--I've got a few errands and meetings coming up this afternoon. --SyrusHmmm... Any chance you could post your VI saved as 7.1?
Thanks,
Gary
Posted 23 October 2006 - 08:48 PM
Thanks,I'll try. I do still have 8.0.1 and 7.1 running on my primary workstation. I'll have to get back to this later--I've got a few errands and meetings coming up this afternoon. --Syrus