Nothing
test_that("a solution is found in the two-tensor case", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
expect_no_error(cmtf_opt(Z, 1, max_iter=2))
})
test_that("a solution is found when running LBFGS", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
expect_no_error(cmtf_opt(Z, 1, max_iter=2, method="L-BFGS"))
})
test_that("the objective is very high if an incorrect solution is found", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
result = cmtf_opt(Z, 2, initialization="random", max_iter=2)
expect_gt(result$f, 0)
})
test_that("allOutput=TRUE gives a list of expected length", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
results = cmtf_opt(Z, 2, initialization="random", nstart=3, max_iter=2, allOutput=TRUE)
expect_equal(length(results), 3)
})
test_that("the loss term per block has the correct length", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
model = cmtf_opt(Z, 1, max_iter=2)
expect_true(length(model$f_per_block)==2)
})
test_that("the sum of the the loss term per block is equal to the overall loss", {
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
model = cmtf_opt(Z, 1, max_iter=2)
expect_equal(sum(model$f_per_block), model$f)
})
test_that("running in parallel works", {
skip_on_cran()
set.seed(123)
I = 10
J = 5
K = 3
L = 8
M = 3
A = array(rnorm(I*2), c(I, 2))
B = array(rnorm(J*2), c(J, 2))
C = array(rnorm(K*2), c(K, 2))
D = array(rnorm(L*2), c(L, 2))
E = array(rnorm(M*2), c(M, 2))
df1 = reinflateTensor(A, B, C)
df2 = reinflateTensor(A, D, E)
datasets = list(df1, df2)
modes = list(c(1,2,3), c(1,4,5))
Z = setupCMTFdata(datasets, modes, normalize=FALSE)
expect_no_error(cmtf_opt(Z,2,initialization="random", nstart=2, max_iter=2, numCores=2))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.