Я хочу передать batch_size
целое число в качестве заполнителя в Tensorflow. Но это не действует как целое число. Рассмотрим следующий пример:
import tensorflow as tf
max_length = 5
batch_size = 3
batch_size_placeholder = tf.placeholder(dtype=tf.int32)
mask_0 = tf.one_hot(indices=[0]*batch_size_placeholder, depth=max_length, on_value=0., off_value=1.)
mask_1 = tf.one_hot(indices=[0]*batch_size, depth=max_length, on_value=0., off_value=1.)
# new session
with tf.Session() as sess:
feed = {batch_size_placeholder : 3}
batch, mask0, mask1 = sess.run([
batch_size_placeholder, mask_0, mask_1
], feed_dict=feed)
Когда я печатаю значения batch
, mask0
и mask1
, я получаю следующее:
print(batch)
>>> array(3, dtype=int32)
print(mask0)
>>> array([[0., 1., 1., 1., 1.]], dtype=float32)
print(mask1)
>>> array([[0., 1., 1., 1., 1.],
[0., 1., 1., 1., 1.],
[0., 1., 1., 1., 1.]], dtype=float32)
Действительно, я думал mask0
и mask1
должны быть одинаковыми, но, похоже, Tensorflow не рассматривает batch_size_placeholder
как целое число. Я полагаю, что это будет тензор, но в любом случае я могу использовать его как целое число в своих вычислениях?
В любом случае я могу решить эту проблему? Просто к вашему сведению, я использовал tf.one_hot
в качестве примера, я хочу запустить тренировку / проверку во время обучения в моем коде, где мне понадобится много других вычислений с различными значениями для batch_size
в обучении и на этапах проверки.
Любая помощь будет оценена.