InvalidArgumentError: Входные данные для операции типа EluGrad должны иметь одинаковый размер и форму. Вход 0: [1,20]! = Вход 1: [32,20] - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть следующий код, который должен быть минимальным тиражируемым примером.

from keras.callbacks import ModelCheckpoint
from keras.layers import advanced_activations
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error 
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import warnings 
warnings.filterwarnings('ignore')
warnings.filterwarnings('ignore', category=DeprecationWarning)
from keras.models import Model
from keras.layers import Dense, Input, Add, Lambda
from keras.models import Model
from keras.layers import Dense, Input, Add, Lambda
import numpy as np
import scipy as sci
import pandas as pd
import scipy.stats
from sklearn import *
from sklearn.svm import SVR
import tensorflow as tf


def model(inp_size ):
    inp = Input(batch_shape=(1 , inp_size))

    x1 = Dense(50, activation='elu')((inp))
    x1 = Dense(20, activation='elu')(x1)
    x1 = Dense(1, activation = 'linear')(x1)

    x2 = Dense(50, activation='elu')(inp)
    x2 = Dense(20, activation='elu')(x2)
    x2 = Dense(1, activation = 'linear')(x2)

    x3 = Dense(50, activation='elu')(inp)
    x3 = Dense(20, activation='elu')(x3)
    x3 = Dense(1, activation = 'linear')(x3)

    x4 = Dense(50, activation='elu')(inp)
    x4 = Dense(20, activation='elu')(x4)
    x4 = Dense(1, activation = 'linear')(x4)



    x1 = Lambda(lambda x: x * 4)(x1)
    x2 = Lambda(lambda x: x * 5)(x2)
    x3 = Lambda(lambda x: x * 6)(x3)
    x4 = Lambda(lambda x: x * 6)(x4)

    out = Add()([x1, x2, x3, x4])

    return Model(inputs = inp, outputs = out)
X_train = np.random.rand(3000,46)
y_train = np.random.rand(3000,1)

NN_model = model(X_train.shape[1])
NN_model.compile(loss='mean_absolute_error', optimizer='SGD', metrics=['mean_absolute_error'])
NN_model.build(X_train.shape)

NN_model.summary()
NN_model.fit(X_train, y_train, epochs=2,verbose = 1)

Мне нужно сравнить линейные комбинации выходных данных с одним значением, так что это структура, которая была мне предложена.Однако, когда я запускаю код, я получаю следующую ошибку:

InvalidArgumentError: Matrix size-incompatible: In[0]: [32,20], In[1]: [1,1]
     [[{{node training_50/SGD/gradients/dense_1173/MatMul_grad/MatMul_1}}]]

Спасибо за любую помощь!

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