0

画像に対してピクセルベースの分類を実行します。NNのトレーニングに使用したコードは次のとおりです

net = input_data(shape=[None, 1,4])
net = tflearn.lstm(net, 128, return_seq=True)
net = tflearn.lstm(net, 128)
net = tflearn.fully_connected(net, 1, activation='softmax')
net = tflearn.regression(net, optimizer='adam',
                         loss='categorical_crossentropy')
model = tflearn.DNN(net, tensorboard_verbose=2, checkpoint_path='model.tfl.ckpt')
X_train = np.expand_dims(X_train, axis=1)
model.fit(X_train, y_train, n_epoch=1, validation_set=0.1, show_metric=True,snapshot_step=100)

問題は、モデルをトレーニングした後、p.array(model.predict(x_test)) の結果が 1 のみになることです。ただし、これは 2 または 3 になると予想していました。そのコマンドの結果が 2 から 5 の間のラベルになることを期待していました (注: y_train には 2 から 5 の間の int 値があります) が、ここでも予測関数の出力は 1 です。これはトレーニング フェーズの問題でしょうか?

4

1 に答える 1

0

Noneパラメータは、さまざまなトレーニング例を示すために使用されます28*28*4あなたの場合、使用しているカスタム 4 チャネル データセットにより、各画像には合計のパラメーターがあります。

この LSTM を機能させるには、次のことを試してください -

X = np.reshape(X, (-1, 28, 28, 4))
testX = np.reshape(testX, (-1, 28, 28, 4))

net = tflearn.input_data(shape=[None, 28, 28, 4])

もちろん、(これは非常に重要です)reshape()が numpy 配列の最後の次元の 1 つのピクセルに対応する 4 つの異なるチャネルを配置し、1 つの画像のピクセルに対応していることを確認して28, 28ください。


画像にディメンションがない場合は28*28、それに応じてこれらのパラメーターを調整してください。

于 2017-01-01T11:03:57.333 に答える