Конкатенация массивов и слоев кераса - PullRequest
1 голос
/ 17 апреля 2019

У меня проблема:

Я пытаюсь сделать простые самодвижущиеся машины, которые могут плавно двигаться, управлять дроссельной заслонкой и ломаться.

И у меня такая проблема:

Я не могу объединить модель VGG_16 с керасом и текущей скоростью автомобиля.

Уже пробовал:

from keras.applications import VGG16
from keras import models
from keras import layers
from Train import *
import numpy as np
import keras
from keras.layers import concatenate
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
from keras.layers import Input, Flatten, Dense
from keras.models import Model
import numpy as np
import tensorflow as tf
import keras.backend as K


images, speed, labels = LoadGPS_SPEED() # load training data, image, car speed and label ([0, 1, 0], for example. Where [0 - left turn, 1 - throttle, 0 - right turn] 

speed = speed.reshape(speed.shape[0], 1) # reshape to shape[0], 1, because speed is just a number (20, for example)

speed = K.variable(speed) # here is some magic, which i tired, because without that i got other error, lol. P.S Right after loading, images, speed and labels - are just numpy arrays

vgg_conv = VGG16(weights='imagenet', # VGG from default keras application
             include_top=False)

for layer in vgg_conv.layers[0:-4]:
    layer.trainable = False

input = Input(shape=(60,60,3),name = 'image_input')

output_vgg16_conv = vgg_conv(input)

conv_flat = layers.Flatten()(output_vgg16_conv)
conv_flat = concatenate([speed, conv_flat]) # trying to concatenate speed and flatten layer
conv_flat = layers.Dense(1024, activation='relu')(conv_flat)
conv_flat = layers.Dropout(0.5)(conv_flat)
conv_flat = layers.Dense(3, activation='softmax')(conv_flat) # 3 possible actions

и только что получил такую ​​ошибку:

Traceback (последний вызов был последним): File «D: /Python_Projects/ProjectCars/ModelGenerate.py», строка 34, в conv_flat = concatenate ([speed, conv_flat])

Файл "C: \ Program" Файлы \ Python35 \ lib \ site-packages \ keras \ Layers \ merge.py ", строка 649, в сцеплять возврат конкатенации (ось = ось, ** кваргс) (входные данные)

Файл "C: \ Program" Файлы \ Python35 \ lib \ site-packages \ keras \ engine \ base_layer.py ", строка 431, в звоните self.build (unpack_singleton (input_shapes)) * * тысяча двадцать-одна

Файл "C: \ Program" Файлы \ Python35 \ lib \ site-packages \ keras \ Layers \ merge.py ", строка 362, в строить 'Получил формы ввода:% s'% (input_shape))

ValueError: для слоя Concatenate требуются входные данные с соответствующими формами кроме конкатной оси. Получил входные формы: [(10, 1), (Нет, 512)]

Пожалуйста, помогите мне. Я только начинающий и не знаю, как это исправить: c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...