मैं सीख रहा हूँ ... बदलेगी देश और कोशिश कर रहा हूँ का निर्माण करने के लिए एक क्लासिफायरफ़ाइल पर फैशन 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]
मैं कुछ समय बिताया है googling और पर देख रहे हैं के अन्य उदाहरण इस एक ही त्रुटि है, लेकिन अभी भी नहीं कर सकते हैं बाहर आंकड़ा क्या मैं गलत कर रहा हूँ. मैंने कोशिश की है कुछ अलग अलग चीजें हैं, इस तरह के रूप में आवेदन के पैमाने पर विस्तार और आयाम कदम मैन्युअल रूप से करने के लिए X_train और X_test के निर्माण से पहले के मॉडल है, लेकिन एक ही परिणाम प्राप्त.
यह मेरा पूरा कोड (अजगर का उपयोग कर 3.7.12 और ... बदलेगी देश 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