Керас 2D выход - PullRequest
       0

Керас 2D выход

1 голос
/ 25 апреля 2020

Мне нужно сделать модель, которая будет принимать в качестве входных данных двумерную двоичную матрицу, например (37,10), и возвращать реальную двумерную матрицу той же формы, что и входная. Я написал этот код, но я не уверен, что X (в выходном слое) должно быть равно.

model=Sequential()
model.add(Dense(32,activation='linear',input_shape=(37,10)))
model.add(Dense(32,activation='linear'))
model.add(Dense(X,activation='linear'))
model.compile(loss='mse',optimizer=Adam(lr=self.learning_rate),metrics=['accuracy'])

Пожалуйста, дайте мне знать, если вы считаете, что моя модель верна, как определено и что написать вместо X

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Я обновил ваш код, чтобы получить форму вывода, совпадающую с вводом. Нам нужно добавить слой Flatten и Reshape в начале и конце модели. Проще говоря, X должно быть равно количеству элементов в input_shape.

from tensorflow.keras.layers import Dense, Flatten,Reshape
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam

input_shape=(37,10)
num_elm =input_shape[0]*input_shape[1]
model=Sequential()
model.add(Flatten(input_shape=input_shape))
model.add(Dense(32, activation='linear'))
model.add(Dense(32, activation='linear'))
model.add(Dense(num_elm, activation='linear'))
model.add(Reshape(input_shape))
model.compile(loss='mse',optimizer=Adam(),metrics=['accuracy'])

model.summary()

Model: "sequential_5"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten_4 (Flatten)          (None, 370)               0         
_________________________________________________________________
dense_14 (Dense)             (None, 32)                11872     
_________________________________________________________________
dense_15 (Dense)             (None, 32)                1056      
_________________________________________________________________
dense_16 (Dense)             (None, 370)               12210     
_________________________________________________________________
reshape (Reshape)            (None, 37, 10)            0         
=================================================================
Total params: 25,138
Trainable params: 25,138
Non-trainable params: 0
_________________________________________________________________
0 голосов
/ 25 апреля 2020

X будет равно 10, даже несмотря на то, что использование слоев F C для двумерных данных может быть не совсем подходящим, а также вы уверены, что метрики будут точными.

Вот Ваша модель с правильной формой вывода.

from tensorflow.keras.layers import *
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.optimizers import Adam
import tensorflow as tf
import numpy as np

model=Sequential()
model.add(Dense(32,activation='linear',input_shape=(37,10)))
model.add(Dense(32,activation='linear'))
model.add(Dense(10,activation='linear'))
model.compile(loss='mse',optimizer=Adam(lr=.001),metrics=['accuracy'])
model.summary()
Model: "sequential_3"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_8 (Dense)              (None, 37, 32)            352       
_________________________________________________________________
dense_9 (Dense)              (None, 37, 32)            1056      
_________________________________________________________________
dense_10 (Dense)             (None, 37, 10)            330       
=================================================================
Total params: 1,738
Trainable params: 1,738
Non-trainable params: 0
__________________________
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...