【问题标题】:keras fit_generator reading chunks from hdfstorekeras fit_generator 从 hdfstore 读取块
【发布时间】:2018-10-07 17:23:50
【问题描述】:

我尝试为 Keras 模型构建一个生成器,该模型将在大型 hdf 存储上进行训练。 为了加快训练速度,我预先计算了所有特征,包括。 hdfstore 中已经存在 one-hot 编码。所以来自那里的电话应该是直截了当的。

为了将我的数据块馈送到网络中,我尝试使用 fit_generator,但很难启动并运行它。

生成器:

def myGenerator(myStore, generateFrom,generateTo):
 # Create empty arrays to contain batch of features and labels#
    while True:
        X = pd.read_hdf(myStore,'X',start=generateFrom,stop=generateTo)
        y = pd.read_hdf(myStore,'y',start=generateFrom,stop=generateTo)
        yield X,y

网络和拟合:

def get_model(shape):
    '''Create a keras model.'''
    inputlayer = Input(shape=shape)

    model = BatchNormalization()(inputlayer)
    model = Dense(1024, activation='relu')(model)
    model = Dropout(0.25)(model)
    model = BatchNormalization()(inputlayer)
    model = Dense(512, activation='relu')(model)
    model = Dropout(0.25)(model)
    model = BatchNormalization()(inputlayer)
    model = Dense(256, activation='relu')(model)
    model = Dropout(0.25)(model)
    model = BatchNormalization()(inputlayer)
    model = Dense(128, activation='relu')(model)
    model = Dropout(0.25)(model)

    # 11 because background noise has been taken out
    model = Dense(2, activation='tanh')(model)

    model = Model(inputs=inputlayer, outputs=model)

    return model
shape = (6603,10000)
model = get_model(shape)
model.compile(loss='mean_squared_error', optimizer=Adam(), metrics=['accuracy'])
#X = generator(myStore)
#Xt = generator(myStore)
labelbinarizer = LabelBinarizer()
y = labelbinarizer.fit_transform(y)
#yt = labelbinarizer.fit_transform(yt)

generateFrom = 0
for i in range(10):
    generateTo=generateFrom+10000
    model.fit_generator(
        generator=myGenerator(myStore,generateFrom,generateTo),
        epochs=1,
        steps_per_epoch=X[0].shape[0] // 1000)
    generateFrom=generateTo

我已经尝试了这两种方法,将 fit_generator 置于循环中并插入范围(如上所示),同时也处理生成器内的范围。两者都不起作用。目前遇到

TypeError: 'generator' object is not subscriptable

我可能对在这种情况下应该如何使用 fit_generator() 有一些误解。大多数示例都是围绕从图片生成张量。

感谢任何提示。 谢谢

【问题讨论】:

    标签: keras hdfstore


    【解决方案1】:

    函数read_hdf返回一个panda对象,需要转换成numpy数组。

    【讨论】:

    • 谢谢,将添加 .as_matrix() 试试。但除此之外,所采取的方法是正确的/最佳实践吗?
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2019-10-26
    • 1970-01-01
    • 2017-11-17
    • 2020-08-01
    • 2017-09-13
    相关资源
    最近更新 更多