FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


MPSでsoftmax関数を使う

KerasとMPSで同じ計算をする(2)
↑実質、この続き。
活性化関数にsoftmaxを使おうとしたらMPS側がすんなりじゃなかった。
Kerasの方は
model.add(Dense(3, activation='relu'))
↓
model.add(Dense(3, activation=‘softmax’))
これだけでいいんだけど、Metal Performance Shaders の方はsoftmax用にMPSImageを準備するなどしなければならない。
{
    // 準備
    MPSCNNSoftMax *softmax;
    softmax = [[MPSCNNSoftMax alloc] initWithDevice:device];


    // 計算する部分
    [self->h1 encodeToCommandBuffer:commandBuffer sourceImage:self->srcImage destinationImage:self->h1Image];
    [self->h2 encodeToCommandBuffer:commandBuffer sourceImage:self->h1Image destinationImage:self->h2Image];
    [self->softmax encodeToCommandBuffer:commandBuffer sourceImage:self->h2Image destinationImage:self->finalImage];
}
これで意図通りの計算結果になったんだけど、なんだかなあ。
ReLUだとMPSCNNFullyConnectedクラスにすんなり活性化関数として渡せるのにな。

<< Objective-CからC++を動かす  TopPage  KerasとMPSで同じ計算をする(2) >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1188-eba260ba




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad