我想知道keras中的fit_generator()在内存使用方面是否比使用通常的fit()方法(与生成器产生的batch_size相同)有什么优势。我看到了一些类似于此的例子:
def generator():
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# some data prep
...
while 1:
for i in range(1875): # 1875 * 32 = 60000 -> # of training samples
yield X_train[i*32:(i+1)
我遇到了keras和tensorflow的问题,使用以下代码:
from tensorflow.keras.layers import Activation, Conv2D
from tensorflow.keras import Model
from data import DataGenerator
from config import train_datapath, test_datapath
training_generator = DataGenerator(train_datapath)
validation_generator = DataGenerator(test_da
我有一个5 5GB的大型数据集,我想用它来训练使用Keras设计的神经网络模型。虽然我使用的是Nvidia Tesla P100图形处理器,但训练速度非常慢(每个时期需要60-70秒)(我选择了batch size=10000)。经过阅读和搜索,我发现使用keras fit_generator代替典型的fit可以提高训练速度。为此,我编写了以下代码: from __future__ import print_function
import numpy as np
from keras import Sequential
from keras.layers import Dense
impor
我遵循了这里提供的步骤:来安装与gpu一起工作的tensorflow,并使用cuDNN SDK,但出于某些原因,我仍然不能使用它,并且仍然会得到这个错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'CudnnRNN' used by node sequential/cu_dnnlstm/CudnnRNN (defined at cudrnn.py:27) with these attrs: [input_mode=
我正在使用Keras和tensorflow后端来训练一个有多个输出但只有一个损失的模型(输出层“部件”上的MSE)。它的定义如下: model = Model(inputs=[image, year], outputs=outputs) # outputs is a list of 8 output layers
model_parallel = keras.utils.multi_gpu_model(model, gpus=2, cpu_merge=True, cpu_relocation=False)
losses = {'parts': keras.losses.mea
我有一个Keras模型,它可以在单个GPU上进行良好的训练,但是当我在多个GPU上训练它时,所有用于培训的验证损失都是NaNs。
我正在使用一个fit_generator并调用一个验证生成器。在一个GPU上的训练损失和验证损失的返回值都是有效的,并且我的模型收敛,但是在2个或更多GPU上,训练损失是好的和有效的,但是验证损失都是NaNs。这是否任何人以前都遇到过的问题,有没有人对如何补救这个问题有任何建议?我在多台计算机上尝试过这些代码,每台计算机都有不同的Keras/Tensorflow兼容的CUDA GPU,但都没有效果。我可以成功地在任何计算机上训练,尽管只使用一个GPU。
model
我一直在我的笔记本电脑上使用tensorflow for cpu,由于速度太慢,我决定转移到我的台式机上,使用tensorflow for gpu。
问题是,在我的台式计算机上,我不能像这样导入,而我可以在笔记本电脑上这样做:
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dropout, Flatten, Dense
from tensorflow.keras.applications import MobileNetV2
所以我决
上下文
为了在Keras中使用fit_generator(),我使用了一个类似于这个伪代码的生成器函数:
def generator(data: np.array) -> (np.array, np.array):
"""Simple generator yielding some samples and targets"""
while True:
for batch in range(number_of_batches):
yield data[batch * length_se
我有这个示例代码,它只能在n_jobs=1中运行。
Tensorflow后端正在GPU上运行。
当我在方法n_jobs=-1上运行cross_val_score时,在输出4行Epoch 1/100之后,程序会阻塞/停止工作或提供任何输出(由于我有一个4核心的Epoch 1/100,我假设它将使用所有4个核心来完成CV,并且每次尝试在GPU上启动tf会话)。
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.m