Is there an algorithm for categorizing unlabeled samples into K classes? I am not sure if this would be considered unsupervised, or semi-supervised learning.  I am looking for an algorithm that will take N input arrays of features, and then cluster samples(not features) into a user-specified amount of classes.

For example, let's say we had data that we knew were images of circles, squares, and triangles.  In this case, I would be able to specify 3 classes, and the desired outcome would be that it would separate out the circles, squares, and triangles.

Also, if there is such algorithms, are they any good?  Thanks.
Best solution would be to use the inception pertained model in your case as it's very good with over 1000 classes. Also you can label some of the data and make a CNN in Tensforflow, and then use this data to classify other data.