For the Cake:
For the Frosting:
Preheat the oven to 350 degrees F. Grease 2 9" 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. 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 a bit curdled but don't worry.
In a separate bowl, whisk 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. Do not overmix! Fold in the 4 ounces of coconut with a rubber spatula.
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 wire rack to cool further.
For the frosting, in the bowl of an electric mixer fitted with a paddle attachment, combine the cream cheese, butter, vanilla and almond extract on low speed. Add the confectioners' sugar and mix until just smooth. Don't worry if there are a few small lumps...you are going to cover it with more coconut. No one will notice. Just don't whip the frosting!
To assemble, place 1 layer on a flat serving plate, top side down, and spread with frosting. Place the second layer on top, top side up, and frost the top and sides. To decorate the cake, sprinkle the top with coconut and lightly press more coconut onto the sides. Serve at room temperature.