UserWarning: Преобразование разреженных IndexedSlices в плотный тензор неизвестной формы. Это может занять большое количество памяти - PullRequest
0 голосов
/ 17 ноября 2018

Это моя модель.

# Import Keras 
import tensorflow as tf
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D, Flatten,GlobalMaxPool2D
from tensorflow.python.keras.layers import Input, LSTM, Embedding, Dense
from tensorflow.python.keras.models import Model, Sequential
from tensorflow.python import keras
# Define CNN for Image Input
vision_model = Sequential()
vision_model.add(Conv2D(64, (3, 3), activation='relu', padding='same', input_shape=(120, 160, 3)))
vision_model.add(Conv2D(64, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(128, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(128, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(196, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(196, (3, 3), activation='relu'))
vision_model.add(Conv2D(196, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(256, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(256, (3, 3), activation='relu'))
vision_model.add(Conv2D(256, (3, 3), activation='relu'))
vision_model.add(MaxPooling2D((2, 2)))
vision_model.add(Conv2D(384, (3, 3), activation='relu', padding='same'))
vision_model.add(Conv2D(384, (3, 3), activation='relu'))
vision_model.add(GlobalMaxPool2D())
vision_model.summary()
image_input = Input(shape=(120, 160, 3))
encoded_image = vision_model(image_input)

# Define RNN for language input
question_input = Input(shape=(42,), dtype='int32')
embedded_question = Embedding(input_dim=500, output_dim=256, input_length=100)(question_input)
encoded_question = LSTM(256,return_sequences=True)(embedded_question)
encoded_question = LSTM(256)(embedded_question)

# Combine CNN and RNN to create the final model
merged = keras.layers.concatenate([encoded_question, encoded_image])
output = Dense(26, activation='softmax')(merged)
vqa_model = Model(inputs=[image_input, question_input], outputs=output)
vqa_model.summary()

.,,.

vqa_model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['acc'])
vqa_model.fit_generator(train_gen,len(train_data[0])//16,validation_data=val_gen,validation_steps=split//16,verbose=1,epochs=100)

И после этого я получаю эту ошибку

UnknownError: Не удалось получить алгоритм свертки.Вероятно, это связано с тем, что cuDNN не удалось инициализировать, поэтому попробуйте посмотреть, не было ли напечатано предупреждение в журнале выше.[[{{последовательный узел / conv2d / Conv2D}} = Conv2D [T = DT_FLOAT, _class = ["loc: @ обучение / Адам / градиенты / последовательный / conv2d / Conv2D_grad / Conv2DBackpropFilter"], data_format = "NCHW", дилатации =[1, 1, 1, 1], padding = "SAME", strides = [1, 1, 1, 1], use_cudnn_on_gpu = true, _device = "/ job: localhost / replica: 0 / task: 0 / device:GPU: 0 "] (тренировка / Адам / градиенты / последовательный / conv2d / Conv2D_grad / Conv2DBackpropFilter-0-TransposeNHWCToNCHW-LayoutOptimizer, последовательный / conv2d / Conv2D / ReadVariableOp)]] [[{{узел ConstantF / потеря_webs_web_settingstablettable)/ AssertGuard / Switch_0 / _316}} = _Recvclient_terminated = false, recv_device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0", send_device = "/ job: localhost / replica: 0 / task:0 / устройство: GPU: 0 ", send_device_incarnation = 1, тензор_имя =" edge_1886 _... d / Switch_0 ", tenors_type = DT_FLOAT, _device =" / job: localhost / replica: 0 / task: 0 / device: CPU: 0"]]"

Я использую GPU Tenorflow в локальной системе с NVIDIA 1050Ti.

Я попытался найти решениено это не сработало.

...