私は、テンソルフローを使ってPythonで画像分類ネットワークを訓練しました。訓練されたモデルは.pb
として保存されました。さて、私はモデルをテストしたい、私はこれをC++で行う必要がある。C++で訓練されたテンソルフローモデルを実行する
私はnumpy
をデータの操作と操作に使用しました。訓練フェーズの間、画像は数が少ない配列として渡されます。イメージは1D配列として引き伸ばされ、クラスラベルはこの配列の先頭に追加されます。
numpy
が利用できないC++でモデルを実行しているときに画像データを渡す方法については混乱します。私はデータを操作して処理するために操作numpy
を使用します。 C++で実行する必要がある場合は、どのフォーマットでデータを渡す必要がありますか?以下は
は私が訓練し
def trainModel(data):
global_step = tf.Variable(0, name='global_step', trainable=False)
X, y,keep_prob = modelInputs((741, 620, 1),4)
logits = cnnModel(X,keep_prob)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y), name="cost")
optimizer = tf.train.AdamOptimizer(.0001, name='Adam').minimize(cost)
prediction = tf.argmax(logits, 1, name="prediction")
correct_pred = tf.equal(prediction, tf.argmax(y, 1), name="correct_pred")
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32), name='accuracy')
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
saver = tf.train.Saver()
batch_size = 30
for e in range(11):
batch_x, batch_y = data.next_batch(batch_size)
batch_y = batch_y.astype('int32')
x = np.reshape(batch_x, [batch_size, 741, 620, 1])
labels = np.zeros(shape=(batch_size,4))
labels[np.arange(len(labels)),batch_y]=1
sess.run(optimizer, feed_dict={X: x, y: labels,keep_prob:0.5})
global_step.assign(e).eval()
saver.save(sess, './my_test_model',global_step=global_step)
* 741x620はC++でグラフを使用するための
Tensorflowは確かにあなたも、あなたが持っているかわからないので、複雑なネットワークを構築することが容易になります。 C++からNNをどのくらい正確に実行する予定ですか?取り扱っているネットワークやライブラリ?注:図書館の推奨事項はここで話題にはなりません – MSalters
@MSalters私は[this](https://gist.github.com/jimfleming/4202e529042c401b17b7#file-loader-cc)のようにするつもりです。 ソリューションにライブラリの推奨事項が含まれているかどうかはわかりません。 C++でモデルを呼びたいのですが、numpyにアクセスできないときにデータを渡す方法がわかりません。 – dpk
これは関連性があります。テンソルフローを引き続き使用する予定です。これは、入力をテンソルフローにどのように挿入するかという疑問だけを残す。 @正確なのは – MSalters