テンソルフロー1.2テンソルフローで 'mnist.train.next_batch'と 'tf.train.batch'を交換するにはどうすればいいですか?
tfのmnistデータセットを使用してテンソルフローの学習を開始しました。
そしてデータセットを変更しました。 私は 'batch_xs、batch_ys = mnist.train.next_batch(batch_size)'を 'batch_xs、batch_ys = tf.train.batch([X、Y]、batch_size = batch_size)'に交換するというこの問題に直面しました。
テンソルフローでミニバッチを適用する方法を知りたい。
エラーメッセージ
TypeError例外:フィードの値がtf.Tensor対象にすることはできません。許容されるフィード値には、Pythonのスカラ、文字列、リスト、numpy ndarrays、またはTensorHandlesが含まれます。
train_data.shape, train_labels.shape # numpy
# ((10000, 20, 20, 3), (10000, 2))
X = tf.placeholder(tf.float32, [10000, 20, 20, 3])
Y = tf.placeholder(tf.float32, [10000, 10])
W1 = tf.Variable(tf.random_normal([4, 4, 3, 32], stddev=0.01))
L1 = tf.nn.conv2d(X, W1, strides=[1, 1, 1, 1], padding = 'SAME')
L1 = tf.nn.relu(L1)
L1 = tf.nn.max_pool(L1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
L1 = tf.reshape(L1, [-1, 10 * 10 * 32])
W2 = tf.get_variable('W2', shape=[10 * 10 * 32, 10], initializer=tf.contrib.layers.xavier_initializer())
b = tf.Variable(tf.random_normal([10]))
hypothesis = tf.matmul(L1, W2) + b
learning_rate = 0.001
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=hypothesis, labels = Y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
# hyper parameters
learning_rate = 0.001
training_epochs = 5
batch_size = 100
for epoch in range(training_epochs):
avg_cost = 0
total_batch = int(10000/batch_size)
for i in range(total_batch):
# batch_xs, batch_ys = tf.train.batch([X, Y], batch_size)
batch_xs, batch_ys = tf.train.batch([X, Y], batch_size = batch_size)
feed_dict = {X: batch_xs, Y: batch_ys}
c, _, = sess.run([cost, optimizer], feed_dict = feed_dict)
avg_cost += c/total_batch
print('Epoch: ', '%04d' % (epoch + 1), 'cost: ', '{:.9f}'.format(avg_cost))
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.
エラーは、テンソルを 'feed_dict'に供給しているためです。あなたの - feed_dict = {X:train_data_batch、Y:train_label_batch}を変更してください。 train_data_batchとtrain_label_batchの両方がnumpyの配列です –
@vijaymバッチ処理(numpy配列)を教えてください。 私はテンソルフローの初心者です。 – Kim
確認:https://stackoverflow.com/questions/45110098/tensorflow-next-batch-function-of-np-array/45110647?noredirect=1#comment77193477_45110647 –