Preheat oven to 350°F
Grease and flour three 8-inch round layer cake pans.
Because this is a moist batter, don't be tempted to make this a two layer cake.
Sift the first 8 ingredients into a large mixing bowl (cake flour through pudding mix).
Stir to mix.
Thoroughly drain pineapple, reserving juice.
Measure out ½ cup pineapple juice and pour into a small bowl. Add the oil and melted butter and stir.
Stir the liquid ingredients into the dry ingredients.
Add the crushed pineapple.
Beat with a mixer at medium speed for 2 minutes or with a wooden spoon for 3 minutes. Batter will be thick.
Mix in grated carrots, coconut, raisins, and nuts (if using).
Turn the batter into the 3 cake pans and smooth the tops.
Bake for 30 to 40 minutes or until a toothpick inserted in the center comes out clean.
Place cake pans on wire racks and let cool for 10 minutes.
With a small flat metal spatula, carefully loosen sides of cakes and invert on the wire racks, removing pans.
Let cool completely and frost with cream cheese frosting. Sprinkle with chopped nuts, if desired.
Beat softened cream cheese, butter, and pure vanilla extract until light and creamy.
Carefully add powdered sugar, 1 cup at a time, and beat on low speed after each addition until it is incorporated into the cream cheese mixture.
Add pumpkin pie spice, if using, and mix into the frosting.
Only add milk if the frosting is too thick for spreading.
If too thin, add powdered sugar, ¼ cup at a time until it is the consistency you desire.
Frost the cake and sprinkle chopped nuts on the top, if using.