Tensorflow 当列表包含1000000个元素时,转换为tf.constant太慢
进行培训的最佳方式是什么。太慢了!我不知道为什么会这么慢Tensorflow 当列表包含1000000个元素时,转换为tf.constant太慢,tensorflow,Tensorflow,进行培训的最佳方式是什么。太慢了!我不知道为什么会这么慢 samples_all = tf.constant(samples_all)//more than 1000000 elems labels_all = tf.constant(labels_all) [sample, label] = tf.train.slice_input_producer([samples_all, labels_all]) 所有示例都包含超过1000000个表示图像路径的字符串元素。代码中的前两行太长,无法执行
samples_all = tf.constant(samples_all)//more than 1000000 elems
labels_all = tf.constant(labels_all)
[sample, label] = tf.train.slice_input_producer([samples_all, labels_all])
所有示例都包含超过1000000个表示图像路径的字符串元素。代码中的前两行太长,无法执行。下面是一个示例,在我的MacBook上,将2M字符串加载到字符串变量中所花费的时间不到1秒。变量对于大常量的效率高于
tf.constant
,后者在图中内联。请注意,还有tf.string\u input\u producer
,它可以处理大量字符串列表,而无需将它们全部加载到TensorFlow内存中
n = 2000000
string_list = np.asarray(["string"]*n);
sess = tf.Session()
var_input = tf.placeholder(dtype=tf.string, shape=(n,))
var = tf.Variable(var_input)
start = time.time()
# var.initializer is equivalent to var.assign(var_input).op
sess.run(var.initializer, feed_dict={var_input: string_list})
elapsed = time.time()-start
rate = n*6./elapsed/10**6
print("%.2f MB/sec"%(rate,)) # => 15.13 MB/sec
请在您的问题中添加更多细节。对我来说似乎不完整。@psyco谢谢你的重播,我已经改变了问题。@keyur9779你是什么意思?你发错人了吗?1000000太大了,不能用作常量,你应该改用变量,然后用
samples\u all
使用var.assign
和feed\u dict
@YaroslavBulatov对其进行初始化,谢谢!好的,我试试看