Python 我可以选择手动更新神经网络中的权重,以允许基本上无限的批量大小吗?
我正在将大图像输入我的CNN,出于某种原因,将图像转换为灰度或使我的网络更小对我的最大批量大小没有任何影响。如果我执行4次以上的操作,16GB cpu上的内存就会耗尽。我一次加载每个批,但仍然遇到内存问题。我想知道,如果使用Tensorflow或Keras作为TF后端,我是否可以一次加载一个图像,更新梯度近似值和每个图像,并且只在完成每个批次后更新权重Python 我可以选择手动更新神经网络中的权重,以允许基本上无限的批量大小吗?,python,tensorflow,neural-network,Python,Tensorflow,Neural Network,我正在将大图像输入我的CNN,出于某种原因,将图像转换为灰度或使我的网络更小对我的最大批量大小没有任何影响。如果我执行4次以上的操作,16GB cpu上的内存就会耗尽。我一次加载每个批,但仍然遇到内存问题。我想知道,如果使用Tensorflow或Keras作为TF后端,我是否可以一次加载一个图像,更新梯度近似值和每个图像,并且只在完成每个批次后更新权重 理论上,只要我有足够的内存一次输入一张图片,这应该允许我将批量大小设置为我想要的大小。我的想法错了吗?我缺少的Keras和Tensorflow的
理论上,只要我有足够的内存一次输入一张图片,这应该允许我将批量大小设置为我想要的大小。我的想法错了吗?我缺少的Keras和Tensorflow的内置函数是否有助于实现这一点?谢谢大家! 您需要使用批处理生成器。和凯拉斯一起看 与从文档中获取的内容类似,定义生成器:
def generate_arrays_from_file(path):
while True:
with open(path) as f:
for line in f:
# create numpy arrays of input data
# and labels, from each line in the file
x1, x2, y = process_line(line)
yield ({'input_1': x1, 'input_2': x2}, {'output': y})
然后将发电机安装到您的模型中
model.fit_generator(generate_arrays_from_file('/my_file.txt'),
steps_per_epoch=10000, epochs=10)
为了避免内存问题,请传递参数max\u queue\u size=1以适应\u生成器,这样队列中只加载了一个批。谢谢,我查看了Keras文档中的生成器,但由于某种原因,找不到此代码段,这样可以更好地清除它。