为了账号安全,请及时绑定邮箱和手机立即绑定

将字母序列传递给 CNN - Keras

将字母序列传递给 CNN - Keras

潇潇雨雨 2022-06-22 16:41:14
我有以下格式的数据:150个字母的序列字母只能是 A、B、C、D、E。我总共有 20k 个序列10k 个序列标记为 1,其他 10k 个序列标记为 0我通过执行以下操作将这 150 个字母转换为 one-hot 向量:from skimage.transform import resizeimport numpy as npdef transform(data): #transform sequence into one hot encoding    def one_hot_encode(seq):        mapping = dict(zip("ABCDE", range(5)))            seq2 = [mapping[i] for i in seq]        return np.eye(5)[seq2]    train = np.zeros((len(data), 150, 5, 1), dtype=np.uint8)    for idx, d in enumerate(data):        seq = one_hot_encode(d)        seq = resize(seq, (150, 5, 1), mode='constant', preserve_range=True)        train[idx] = seq.astype('float32')    return train现在,我只想将这些数据传递到由 Keras 构建的简单 CNN 中。我将模型构建为:model = Sequential()model.add(Conv2D(64,kernel_size=(3,3),activation='relu',input_shape=(150,5,1)))model.add(Conv2D(32, kernel_size=3, activation='relu'))model.add(Flatten())model.add(Dense(1, activation='sigmoid'))model.summary()model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])现在,我正在尝试通过以下方式进行训练:history = model.fit(X_train, Y_train, epochs=100, verbose=False, validation_split=0.25, batch_size=10)但这不断抛出以下错误:InternalError:为 CUDA 设备序号 0 初始化 StreamExecutor 失败:内部:对 cuDevicePrimaryCtxRetain 的调用失败:CUDA_ERROR_OUT_OF_MEMORY:内存不足;报告的总内存:11721506816我已经训练了尺寸为 512x512x3 的图像,其输入尺寸远不止于此。那么为什么会导致这个错误呢?
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

显然您的视频卡没有足够的内存来处理输入数据,因此出现错误。尝试将批量大小减少到 4 或 2,然后再次运行相同的模型。



查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号