1D CNN in Keras: afvlakken van samengevoegde functies om dichte laag verhoogt ValueError

stemmen
0

Ik heb de volgende CNN model gedefinieerd. wordt verwacht een 1D vectoringang lengte 501.

model = ml.models.Sequential()
model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(None, 501)))
model.add(ml.layers.MaxPooling1D(pool_size=POOL_SIZE, padding='valid'))
model.add(ml.layers.Flatten())
model.add(ml.layers.Dense(HIDDEN_SIZE-1, activation=ACTIVATION))

Maar dit roept een waarde fout:

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.

Ik ben niet zeker waarom afvlakken is niet het creëren van een vorm van iets dergelijks (None, x), maar in plaats daarvan (None, None). Wat is het probleem hier te zijn?

Dit is het model samenvatting:

Model: sequential
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d (Conv1D)              (None, None, 50)          250550    
_________________________________________________________________
max_pooling1d (MaxPooling1D) (None, None, 50)          0         
_________________________________________________________________
flatten (Flatten)            (None, None)              0         
=================================================================
Total params: 250,550
Trainable params: 250,550
Non-trainable params: 0
_________________________________________________________________
De vraag is gesteld op 24/10/2019 om 11:58
bron van user
In andere talen...                            


2 antwoorden

stemmen
0

Ik heb bedacht de oplossing. Ik was niet correct definiëren van de input_shape van de Conv1D Layer, moet het in plaats daarvan zijn:

model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(501, 1)))
antwoordde op 24/10/2019 om 12:12
bron van user

stemmen
0

Lagen samenvoegen verandert het formaat van het beeld van een tweedimensionale reeks (a, b) een eendimensionale matrix (aXb) .Layer Pooling out-put max_pooling1d (MaxPooling1D) (n, n, 50) een tweedimensionale matrix (0,0) Dus laag samenvoegen: flatten (samenvoegen) (n, n)

antwoordde op 24/10/2019 om 12:16
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more