- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于签名识别的 CNN 项目,但我得到了标题这样的错误。这是代码
#import lib
import numpy as np
import cv2
import matplotlib.pyplot as plt
import os
import time
#tensorflow lib
import tensorflow
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.layers.normalization import BatchNormalization
from keras.callbacks import Callback
from keras import backend as K
from keras import optimizers
#sklearn lib
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score
from sklearn.metrics import classification_report
#data specification
DIRECTORY = 'C:/Users/MSI GF/Pictures/DataLatih/'
CATEGORIES = ["akMundur", "akTajam", "akLembut", "caMenaik", "caMenurun", "cangkang", "coretanTengah", "garisBawah", "others"]
DATASET = []
IMG_ROWS, IMG_COLS = 224, 224
num_classes = 8
#Load DATASET and create DATASET *once exec
def create_training_data():
for category in CATEGORIES:
path = os.path.join(DIRECTORY,category)
class_num = CATEGORIES.index(category)
for img in os.listdir(path):
try:
#read img and preprocess
#RGB to grayscale
img_array = cv2.imread(os.path.join(path,img),cv2.IMREAD_GRAYSCALE)
#grayscale to threshold
retval,img_array = cv2.threshold(img_array, 128, 1, cv2.THRESH_BINARY)
DATASET.append([img_array,class_num])
except Exception as e:
pass
print("Jumlah data: ", len(DATASET))
create_training_data()
print("Persiapan Data")
#split training set and test set
X = [] #features
Y = [] #labels
for features, label in DATASET:
X.append(features)
Y.append(label)
X = np.array(X).reshape(-1, IMG_ROWS, IMG_COLS, 1)
print("Ukuran DATASET : ", X.shape)
#split X, Y to train and test set
x_train,x_test,y_train,y_test = train_test_split(X, Y, train_size=0.4)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train/=255
x_test/=255
print("Ukuran x_train : ", x_train.shape)
print("Ukuran x_test : ", x_test.shape)
print("Ukuran y_train : ", len(y_train))
print("Ukuran y_test : ", len(y_test))
#checking image
#change dimension to plt
print("Contoh lima sampel data x_train")
x_train = np.array(x_train).reshape(-1, IMG_ROWS, IMG_COLS)
plt.figure(figsize=(10,10))
for i in range(10):
plt.imshow(x_train[i], cmap=plt.cm.gray)
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.xlabel(CATEGORIES[y_train[i]])
plt.show()
#reshape back to use in learning
x_train = np.array(x_train).reshape(-1, IMG_ROWS, IMG_COLS, 1)
#convert class vector to binary class metrics
y_train = keras.utils.to_categorical(y_train, num_classes)
x_test = keras.utils.to_categorical(x_test, num_classes)
print("Contoh kelas : ")
print(y_train[0])
print(y_test[0])
#begin model, using ALexNet architecture
model = Sequential()
#1st Conv layer
model.add(Conv2D(filters=96, input_shape=[224,224,1], kernel_size=(11,11), strides=(4,4), padding='valid', activation='relu'))
#Max Pooling layer 1
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
#2nd Conv Layer
model.add(Conv2D(filters=256, kernel_size=(11,11), strides=(1,1), padding='valid', activation='relu'))
#Max Pooling layer 2
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
#3rd Conv Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding='valid', activation='relu'))
#4th Conv Layer
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding='valid', activation='relu'))
#5th Conv Layer
model.add(Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), padding='valid', activation='relu'))
#Max Pooling Layer 3
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid'))
#passing to Fully Connected Layer
model.add(Flatten())
#1st FC Layer
model.add(Dense(4096, input_shape=(224*224*1,)))
model.add(Activation('relu'))
model.add(Dropout(0.4))
#2nd FC Layer
model.add(Dense(4096))
model.add(Activation('relu'))
model.add(Dropout(0.4))
#3rd FC Layer
model.add(Dense(1000))
model.add(Activation('relu'))
model.add(Dropout(0.4))
#Output layer
model.add(Dense(8))
model.add(Activation('softmax'))
model.summary()
sgd = optimizers.SGD(lr=0.01, momentum=0.9, decay=0.0, nesterov=False)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['categorical_accuracy'])
#training model
print("Training model")
start_time = time.time()
history = model.fit(x_train, y_train, epochs=100, validation_data=(x_test, y_test))
print("\nTraining Model Selesai")
print("Lama waktu learning: ", (time.time() - start_time) / 60)
print(history.history.keys())
plt.figure(1)
#calculate loss and accuracy
score = model.evaluate(x_test, y_test)
print('Model telah selesai dilakukan pelatihan')
print('Test Loss : ', score[0])
print('Test Accuracy : ', score[1]*100.0)
#save model and weight
#model to json files
model_json = model.to.json()
with open("model/model_json_sgd001.json", "w") as json_file:
json_file.write(model_json)
#weight to h5 file
model.save_weights("model/model_1_sgd001.h5")
print("Model dan Bobot telah disimpan")
训练模型部分显示的错误。这是错误
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-12-c5d6ddb58171> in <module>
2 print("Training model")
3 start_time = time.time()
----> 4 history = model.fit(x_train, y_train, epochs=100, validation_data=(x_test, y_test))
5
6 print("\nTraining Model Selesai")
C:\Anaconda3\envs\PythonGPU\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps,
**kwargs)
970 val_x, val_y,
971 sample_weight=val_sample_weight,
--> 972 batch_size=batch_size)
973 if self._uses_dynamic_learning_phase():
974 val_ins = val_x + val_y + val_sample_weights + [0.]
C:\Anaconda3\envs\PythonGPU\lib\site-packages\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size)
749 feed_input_shapes,
750 check_batch_axis=False, # Don't enforce the batch size.
--> 751 exception_prefix='input')
752
753 if y is not None:
C:\Anaconda3\envs\PythonGPU\lib\site-packages\keras\engine\training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
136 ': expected ' + names[i] + ' to have shape ' +
137 str(shape) + ' but got array with shape ' +
--> 138 str(data_shape))
139 return data
140
ValueError: Error when checking input: expected conv2d_1_input to have shape (224, 224, 1) but got array with shape (224, 224, 8)
我认为这是因为我的输入有 8 个 channel 而不是 1 个,但是如何修复它?
最佳答案
似乎您对输入张量而不是标签进行了一次性编码:
x_test = keras.utils.to_categorical(x_test, num_classes)
y_test
关于python - ValueError : Error when checking input: expected conv2d_1_input to have shape (224, 224, 1) 但得到了形状为 (224, 224, 8) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236436/
您好,我很确定我的问题很愚蠢,但我无法弄清楚它对我的生活有何影响。我有这个家庭作业,它基本上是为了加强我们在类里面学到的关于多态性的知识(顺便说一下,这是 C++)。该程序的基础是一个名为 shape
我是新手,所以需要任何帮助,当我要求一个例子时,我的教授给我了这段代码,我希望有一个工作模型...... from numpy import loadtxt import numpy as np fr
CSS 形状边距 和 外型不适用于我的系统。我正在使用最新版本的 Chrome。我唯一能想到的是我的操作系统是 Windows 7。这应该是一个问题吗? 这是JSFiddle .但是,由于在您的系统上
#tf.shape(tensor)和tensor.shape()的区别 ?
我要求提示以下问题。如何从事件表添加到指定的单元格形状?当我知道名称但不知道如何为...中的每个形状实现论坛时,我可以添加形状 目前我有这样的事情: Sub loop() Dim a As Integ
我在 Excel 中有一个流程设计(使用形状、连接器等)。 我需要的是有一个矩阵,每个形状都有所有的前辈和所有的后继者。 在 VBA 中,为此我正在尝试执行以下操作: - 我列出了所有的连接器(Sha
我正在使用 JavaFX 编写一个教育应用程序,用户可以在其中绘制和操作贝塞尔曲线 Line、QuadCurve 和 CubicCurve。这些曲线应该能够用鼠标拖动。我有两种选择: 1- 使用类 L
我正在尝试绘制 pandas 系列中列的直方图 ('df_plot')。因为我希望 y 轴是百分比(而不是计数),所以我使用权重选项来实现这一点。正如您在下面的堆栈跟踪中发现的那样,权重数组和数据系列
我尝试在 opencv dnn 中实现一个 tensorflow 模型。这是我遇到的错误: OpenCV: Can't create layer "flatten_1/Shape" of type "
我目前正在用 Java 开发一款游戏,我一直在尝试弄清楚如何在 Canvas 上绘制一个形状(例如圆形),在不同的形状(例如正方形)之上,但是只绘制与正方形相交的圆的部分,类似于 Photoshop
import cv2 import numpy as np import sys import time import os cap = cv2.VideoCa
我已经成功创建了 Keras 序列模型并对其进行了一段时间的训练。现在我试图做出一些预测,但即使使用与训练阶段相同的数据,它也会失败。 我收到此错误:{ValueError}检查输入时出错:预期 em
我正在尝试逐行分解程序。 Y 是一个数据矩阵,但我找不到任何关于 .shape[0] 究竟做了什么的具体数据。 for i in range(Y.shape[0]): if Y[i] == -
我正在尝试运行代码,但它给了我这个错误: 行,列,_ = frame.shape AttributeError:“tuple”对象没有属性“shape” 我正在使用OpenCV和python 3.6,
我想在 JavaFx 中的 Pane 上显示形状。我正在使用从空间数据库中选择的 Oracle JGeometry 对象,它有一个方法 createShape() 但它返回 java.awt.Shap
在此代码中: import pandas as pd myj='{"columns":["tablename","alias_tablename","real_tablename","
我正在尝试将 API 结果应用于两列。 下面是我的虚拟数据框。不幸的是,这不是很容易重现,因为我使用的是带有 key 和密码的 API...这只是为了让您了解尺寸。 但我希望也许有人能发现一个明显的问
我的代码是: final String json = getObjectMapper().writeValueAsString(JsonView.with(graph) .onClas
a=np.arange(240).reshape(3,4,20) b=np.arange(12).reshape(3,4) c=np.zeros((3,4),dtype=int) x=np.arang
我正在尝试从张量中提取某些数据,但出现了奇怪的错误。在这里,我将尝试生成错误: a=np.random.randn(5, 10, 5, 5) a[:, [1, 6], np.triu_indices(
我是一名优秀的程序员,十分优秀!