Я хочу использовать предварительно обученные модели, такие как Xception, VGG16, ResNet50 и т. д., для своего проекта по распознаванию изображений глубокого обучения, чтобы быстро обучить модель на обучающем наборе с высокой точностью. У меня возникли проблемы с поиском точного кода для реализации моей модели. Во-первых, в соответствии с требованиями модели VGG16 я изменил форму ввода обучающих данных с (256 256,3) на (224 224,3). Я использовал среду программирования Keras. Мои коды моделей следующие
ValueError: Input 0 is incompatible with layer block1_conv1: expected ndim=4, found ndim=3
Что мне следует сделать, чтобы получить правильный результат?
Кроме того, я попытался запустить следующий код, изменив только выходной слой. Я получил эту ошибку ValueError: Ошибка при проверке цели: ожидалось, что прогнозы будут иметь 2 измерения, но получен массив с формой (670, 224, 224, 1)
model_vgg16_conv = VGG16(input_shape=(IMG_WIDTH,IMG_HEIGHT,3),weights='imagenet', include_top=False,pooling=max)
model_vgg16_conv.summary()
#print("ss")
#Create your own input format
input = Input(shape=(IMG_WIDTH,IMG_HEIGHT,3),name = 'image_input')
#print("ss2")
#Use the generated model
output_vgg16_conv = model_vgg16_conv(input)
print("ss3")
#Add the fully-connected layers
x = Flatten(name='flatten')(output_vgg16_conv)
x = Dense(512, activation='relu', name='fc1')(x)
x = Dense(128, activation='relu', name='fc2')(x)
x = Dense(1, activation='sigmoid', name='predictions')(x)
#Create your own model
my_model = Model(input=input, output=x)
#In the summary, weights and layers from VGG part will be hidden, but they will be fit during the training
my_model.summary()
my_model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
Я хочу использовать предварительно обученные модели, такие как Xception, VGG16, ResNet50 и т. д., для своего проекта по распознаванию изображений глубокого обучения, чтобы быстро обучить модель на обучающем наборе с высокой точностью. У меня возникли проблемы с поиском точного кода для реализации моей модели. Во-первых, в соответствии с требованиями модели VGG16 я изменил форму ввода обучающих данных с (256 256,3) на (224 224,3). Я использовал среду программирования Keras. Мои коды моделей следующие [code]train_x = np.expand_dims(train_X, axis=2) train_y = np.expand_dims(train_Y, axis=2) print(train_X.shape) # output - (670, 224, 224, 3) print(train_Y.shape) # output - (670, 224, 224, 1) print(train_x.shape) # output - (670, 224, 1, 224, 3) print(train_y.shape) # output - (670, 224, 1, 224, 1)
def vgg16_(IMG_WIDTH=224,IMG_HEIGHT=224,IMG_CHANNELS=3): inputs = Input(shape=(len(train_x[0]), 1)) x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1')(inputs) x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block1_pool')(x)
# Block 2 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1')(x) x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block2_pool')(x)
# Block 3 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block3_pool')(x)
# Block 4 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block4_pool')(x)
# Block 5 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block5_pool')(x)
x = Flatten()(x) x = Dropout(0.2)(x) x = Dense(100, activation='tanh')(x) x = Reshape([len(train_x[0]),1])(x) model = Model(inputs, reshape) model.compile(loss='mse', optimizer='rmsprop') return model [/code] Но, к сожалению, я получаю эту ошибку, подгоняя эту модель к данным обучения [code]ValueError: Input 0 is incompatible with layer block1_conv1: expected ndim=4, found ndim=3 [/code] Что мне следует сделать, чтобы получить правильный результат? Кроме того, я попытался запустить следующий код, изменив только выходной слой. Я получил эту ошибку ValueError: Ошибка при проверке цели: ожидалось, что прогнозы будут иметь 2 измерения, но получен массив с формой (670, 224, 224, 1) [code]model_vgg16_conv = VGG16(input_shape=(IMG_WIDTH,IMG_HEIGHT,3),weights='imagenet', include_top=False,pooling=max) model_vgg16_conv.summary() #print("ss") #Create your own input format input = Input(shape=(IMG_WIDTH,IMG_HEIGHT,3),name = 'image_input') #print("ss2") #Use the generated model output_vgg16_conv = model_vgg16_conv(input) print("ss3") #Add the fully-connected layers x = Flatten(name='flatten')(output_vgg16_conv) x = Dense(512, activation='relu', name='fc1')(x) x = Dense(128, activation='relu', name='fc2')(x) x = Dense(1, activation='sigmoid', name='predictions')(x)
#Create your own model my_model = Model(input=input, output=x)
#In the summary, weights and layers from VGG part will be hidden, but they will be fit during the training my_model.summary()
my_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) [/code] Как решить эту проблему?
Я использую предварительно обученную модель Alexnet (без тонкой настройки) от torchvision. Проблема в том, что, хотя я могу запустить модель на некоторых данных и получить выходное распределение вероятностей, я не могу найти метки классов, чтобы...
Я разработал алгоритм Q-обучения, который работает хорошо, поэтому я бы попытался использовать алгоритм DeepQ-обучения, чтобы изучить среду CartPole в среде тренажерного зала. Поэтому, основываясь на моем алгоритме Q-обучения, я безуспешно пытался...
Я разработал алгоритм Q-обучения, который работает хорошо, поэтому я бы попытался использовать алгоритм DeepQ-обучения, чтобы изучить среду CartPole в среде тренажерного зала. Поэтому, основываясь на моем алгоритме Q-обучения, я безуспешно пытался...
Мне нужно реализовать федеративное обучение. Итак, я обучил список из 5 моделей и обучил каждую модель на разных наборах данных. Теперь мне нужно объединить обученные модели в список, но я понятия не имею, как это сделать. После этого мне придется...