Preheat oven to 350F. Grease and flour two 9″ round baking pans.
In a medium bowl, whisk together the flour, baking powder, baking soda and salt. Set aside.
Using a stand mixer with paddle attachment, cream the butter and sugar together until light and fluffy, about 3-5 minutes. Add in the eggs, one at a time, mixing well in between. Add in the vanilla and almond extract and mix well.
With the mixer on low speed, add in 1/3 of the flour mixture, followed by 1/2 of the coconut milk. Repeat. Stir in the remaining flour mixture until just combined. Then fold in the shredded coconut with a rubber spatula.
Divide the batter evenly into the prepared baking pans. Bake for 25 -30 minutes or until a toothpick inserted into the center comes out clean. Let cakes cool completely before frosting.
For the frosting: beat the cream cheese, butter, vanilla and almond extract until combined. Mix in the powdered sugar, one cup at a time, until smooth.
To assemble: Trim the cake domes if necessary. Place one layer on a serving plate, top side down. Spread frosting on top. Place second layer on top. Cover cake with frosting.
To decorate: lightly press the shredded coconut onto the sides of the cake and sprinkle with shredded coconut on top. Serve at room temperature.
Leftover cake can be covered and stored in the refrigerator for 3-5 days.