Keras Dimension Несовместимость - PullRequest
0 голосов
/ 23 октября 2019

Я хотел бы закодировать простой вариационный авто-кодировщик в Keras. Поскольку его вариация, я должен использовать функциональный API для кодировщика. Тем не менее, это дает мне ошибку несоответствия размеров, и я не могу понять, почему. Вот мой код и ошибка:

def sampling(args):
    z_mean, z_log_var = args
    epsilon = K.random_normal(shape=(100,2),
                              mean=0., stddev=1)
    return z_mean + K.exp(z_log_var) * epsilon

def testFcn():
    K.clear_session()

    # Create the input
    inPut = Input(shape=(3,))

    # Encoder Layers
    xEnc = Dense(128, input_shape=(3,), activation='relu')(inPut)
    xEnc = Dense(64, activation='relu')(xEnc)
    xEnc = Dense(32, activation='relu')(xEnc)

    # Distribution Embedding
    z_mean = Dense(2, activation='relu')(xEnc)
    z_log_var = Dense(2, activation='relu')(xEnc)
    z = Lambda(sampling, output_shape=(2,))([z_mean, z_log_var])

    # Tying together the model
    encoder = Model(inPut, z, name='encoder')
    print("\n Encoder Model")
    encoder.summary()

    return encoder

# Create some random data
X = np.random.multivariate_normal([0]*3,np.eye(3),size=(100))

# Create the model
encoder = testFcn()

# predict
encoder.predict(X)

Это дает мне следующую ошибку:

InvalidArgumentError: 2 root error(s) found.
  (0) Invalid argument: Incompatible shapes: [32,2] vs. [100,2]
     [[{{node lambda_1/mul}}]]
  (1) Invalid argument: Incompatible shapes: [32,2] vs. [100,2]
     [[{{node lambda_1/mul}}]]
     [[lambda_1/add/_23]]
0 successful operations.
0 derived errors ignored.

Любая помощь здесь действительно приветствуется.

1 Ответ

1 голос
/ 23 октября 2019

Это может указать вам верное направление - я смог добиться успеха с помощью этой модификации добавления batch_size:

encoder.predict(X, batch_size=100)

По умолчанию установлено значение 32, что, очевидно, противоречит вашему дизайну. Подробнее здесь: https://keras.io/models/model/#predict

Надеюсь, это поможет.

...