私の質問は下ですが、まず私が達成しようとしていることを説明します。バッチサイズが変更されたときのクラス得点の計算方法
私は自分のモデルで実装しようとしています。私は敵対的なイメージを作り出しています。本質的には、イプシロン値が変わったときにイメージスコアがどのように変化するかをグラフにしたいのです。
ので、次の
x = tf.placeholder(tf.float32, shape=[None, 784])
...
...
# construct model
logits = tf.matmul(x, W) + b
pred = tf.nn.softmax(logits) # Softmax
...さんは私のmodel
が既に訓練されており、この例では、私は次のモデルを使用していましょう、私たちが想定してみましょう私はから番号2の画像の配列を抽出しますmnist
データセット、と私は、次の変数に保存されて...
# convert into a numpy array of shape [100, 784]
labels_of_2 = np.concatenate(labels_of_2, axis=0)
はだから今、私が持っている例では、次のステップは、すべての画像上の異なるイプシロン値を試してみることです...
# random epsilon values from -1.0 to 1.0
epsilon_res = 101
eps = np.linspace(-1.0, 1.0, epsilon_res).reshape((epsilon_res, 1))
labels = [str(i) for i in range(10)]
num_colors = 10
cmap = plt.get_cmap('hsv')
colors = [cmap(i) for i in np.linspace(0, 1, num_colors)]
# Create an empty array for our scores
scores = np.zeros((len(eps), 10))
for j in range(len(labels_of_2)):
# Pick the image for this iteration
x00 = labels_of_2[j].reshape((1, 784))
# Calculate the sign of the derivative,
# at the image and at the desired class
# label
sign = np.sign(im_derivative[j])
# Calculate the new scores for each
# adversarial image
for i in range(len(eps)):
x_fool = x00 + eps[i] * sign
scores[i, :] = logits.eval({x: x_fool,
keep_prob: 1.0})
今、私たちは今...グラフは以下のようになります。最初の画像の場合は...次使用
を
# Create a figure
plt.figure(figsize=(10, 8))
plt.title("Image {}".format(j))
# Loop through the score functions for each
# class label and plot them as a function of
# epsilon
for k in range(len(scores.T)):
plt.plot(eps, scores[:, k],
color=colors[k],
marker='.',
label=labels[k])
plt.legend(prop={'size':8})
plt.xlabel('Epsilon')
plt.ylabel('Class Score')
plt.grid('on')
を画像をグラフ化することができますここに私の質問があります
私が訓練を受けたモデルこれが機能するためには
scores[i, :] = logits.eval({x: x_fool,
keep_prob: 1.0})
...その場合には次の行が動作しないであろう、100
のbatch_size
を用い、Iは、モデル100個のイメージの配列を渡す必要があるが、この例であろうx_fool
は、サイズが(1, 784)
の画像の1つです。
私は、一度に100
の画像のスコアを計算する必要があるとき(私のモデルはbatch_sizeで訓練されていたので、どのクラスの画像にクラス尺度に影響を与えてグラフ化したいのですか? 100)?