ฉันต้องเรียนรู้ Tensorflow และฉันพยายามจะสร้าง classifier บแฟชั่น 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 ใน batches ตัวอย่างเช่น:
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 ก่อนที่ตึกรุ่นแต่ได้ผลลัพธ์เดียวกัน.
นี่คือของฉันเต็มไปด้วยรหัส(ใช้ภาษาไพธอน 3.7.12 และ Tensorflow 2.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