Preheat the oven to 350 degrees F. Grease 2 (9-inch) round cake pans, then line them parchment paper. Grease them again and dust lightly with flour.
In the bowl of an electric mixer fitted with a paddle attachment, cream the butter and sugar on medium-high speed for 3 to 5 minutes, until light yellow and fluffy. Crack the eggs into a small bowl. With the mixer on medium speed, add the eggs 1 at a time, scraping down the bowl once during mixing. Add the vanilla and almond extracts and mix well. The mixture might look curdled; don't be concerned.
In a separate bowl, sift together the flour, baking powder, baking soda and salt. With the mixer on low speed, alternately add the dry ingredients and the milk to the batter in 3 parts, beginning and ending with dry ingredients. Mix until just combined.
Pour the batter evenly into the 2 pans and smooth the top with a knife. Bake in the center of the oven for 45 to 55 minutes, until the tops are browned and a cake tester comes out clean. Cool on a baking rack for 30 minutes, then turn the cakes out onto a baking rack to finish cooling.
For the filling, combine sour cream, can of grated coconut and fresh coconut. Mix well, reserve 1 cup of mixture for frosting.
To assemble, place 1 layer on a flat serving plate, top side down, punch holes in the cake layer with a straw so that when filling is applied the juice will soak into the cake. Place the second layer on top, top side up, and repeat the process.
Once all layers are put together add the 1 cup reserve filling mix with the 8oz cool whip, blend well and frost the cake. To decorate, sprinkle the top with coconut and lightly press more coconut onto the sides. Chill in the refrigerator before serving.