InvalidArgumentError:ConcatOp:차원의 입력이 일치해야 한 예언할 때에 X_test 와 Conv2D 는데,그 이유는 무엇입니까?

0

질문

나는 학습 Tensorflow 력하는 분류를 구축에 패션 MNIST 합니다. 나갈 수 있는 모형,그러나 시도할 때,예측에 나 테스트 설정을 다음과 같은 오류가:

y_pred = model.predict(X_test).argmax(axis=1)

InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,32,10] vs. shape[312] = [1,16,10] [Op:ConcatV2] name: concat

나지 않아 오류가 발생하면 나는 예측에 X_test 배치에서,예를 들어:

y_pred = []
step_size = 10
for i in trange(0, len(X_test), step_size):
  y_pred += model.predict(X_test[i:i+step_size]).argmax(axis=1).tolist()[0]

나는 몇 시간을 보낸 인터넷 검색과를 보고 다른 예는 같은 오류가 있지만 여전히 알아낼 수 없습니다 내가 뭘 잘못입니다. 나는 몇 가지를 시도하고는 다른 것들,적용과 같은 규모 확장 크기 단계에 수동으로 X_train 및 X_test 하기 전에 모델을 구축,그러나 같은 결과를 얻을.

이것이 나의 전체 코드를 사용하여(Python3.7.12 및 Tensorflow2.7.0):

import tensorflow as tf # 2.7.0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# load data 
mnist = tf.keras.datasets.fashion_mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# Build model 

# Input 
inputs = tf.keras.Input(shape=X_train[0].shape)

# # Scale 
x = tf.keras.layers.Rescaling(scale=1.0/255)(inputs)

# Add extra dimension for use in conv2d
x = tf.expand_dims(x, -1)

# Conv2D
x = tf.keras.layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu", strides=2)(x)
x = tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), activation="relu", strides=2)(x)
x = tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), activation="relu", strides=2)(x)

# Flatten
x = tf.keras.layers.Flatten()(x),
x = tf.keras.layers.Dropout(rate=.2)(x)  # 20% chance of dropout  
x = tf.keras.layers.Dense(512, activation='relu')(x)
x = tf.keras.layers.Dropout(rate=.2)(x)   
x = tf.keras.layers.Dense(K, activation='softmax')(x)

model = tf.keras.Model(inputs=inputs, outputs=x)

# Compile
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# Fit
r = model.fit(X_train, y_train, validation_data=[X_test, y_test], epochs=10)

# Throws an error
y_pred = model.predict(X_test).argmax(axis=1)

제공하는

InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,32,10] vs. shape[312] = [1,16,10] [Op:ConcatV2] name: concat
1

최고의 응답

1

model.predict 당신은 만들기에 대한 예측을 일괄적으로 명시 :

계산에 가치가 있습니다. 이 방법은 설계에 대한 일괄 처리의 큰 숫자의 입력이 있습니다. 그것은 사용하기 위한 것이 아닙의 내부는 루프에서 반복하는 데이터와 프로세스 작은 번호를 입력한다.

그러나 크기 X_test 지 않 의해 균등하게 나눌 기본 batch_size=32. 나는 생각한 이의 원인이 될 수 있습니다. 을 변경할 수 있습 h batch_size 16 예를 들어 및 작동합니다:

y_pred = model.predict(X_test, batch_size=16).argmax(axis=1)
print(y_pred)
[[ 8  0  2 ... 14  8  2]
 [15 15  8 ... 10  8 14]
 [ 5 13  4 ...  4  5  6]
 ...
 [11 11 12 ...  7  2  3]
 [ 3  8  0 ... 15  3 14]
 [ 3 13  1 ...  1 15  0]]

수도 있습 사용 model.predict_on_batch(X_test) 에 대한 예측을 할 하나의 배치의 샘플입니다. 그러나,당신은 대부분의 유연한 사용할 경우에는 통화 기능의 모델에 직접:

y_pred = model(X_test[:10])
tf.print(tf.argmax(y_pred, axis=1), summarize=-1)
[[2 8 0 1 1 1 8 2 2 6]]
2021-11-22 13:44:08

감사합니다,그 작품!! 나는 작은 혼란에 대해 일괄'인자-무슨 일이 일어날 경우 내 샘플 크기 소수? 처럼 보이는 내가해야 할 것이 더 읽기에 대한 예측:)
hulky.smash

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................