![](/img/trans.png)
[英]ValueError: Exception encountered when calling layer "sequential_5" (type Sequential)
[英]tensorflow code error ValueError: Exception encountered when calling layer "sequential" (type Sequential)
'从本地文件中学习。 有4760个训练数据和240个测试数据。 我收到这些错误,有什么问题? '''
train_dir=''
train_csv = pd.read_csv(train_dir+'train.csv')
train_images=[]
train_labels=[]
for file in train_csv['data']:
image=np.array(Image.open(train_dir+'train/'+file))
train_images.append(image)
for label in train_csv['label']:
train_labels.append(label)
train_images=np.array(train_images)
train_labels=np.array(train_labels)
test_dir=''
test_csv = pd.read_csv(test_dir+'test.csv')
test_images=[]
test_labels=[]
for file in test_csv['data']:
image=np.array(Image.open(test_dir+'test/'+file))
test_images.append(image)
for label in test_csv['label']:
test_labels.append(label)
test_images=np.array(test_images)
test_labels=np.array(test_labels)
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD,Adam,Adagrad,RMSprop
print("train_images",train_images.shape)
print("train_labels",train_labels.shape)
print("test_images",test_images.shape)
print("test_labels",test_labels.shape)
train_images=train_images.reshape(4760,4096,3)
test_images=test_images.reshape(240,4096,3)
x_train=train_images.astype(np.float32)/255.0
x_test=test_images.astype(np.float32)/255.0
y_train=tf.keras.utils.to_categorical(train_labels,5)
y_test=tf.keras.utils.to_categorical(test_labels,5)
print("x_train",x_train.shape)
print("y_train",y_train.shape)
print("x_test",x_test.shape)
print("y_test",y_test.shape)
n_input=4096
n_hidden1=5000
n_hidden2=2500
n_hidden3=2500
n_hidden4=2500
n_output=5
batch_siz=256
n_epoch=5
def build_model():
model=Sequential()
model.add(Dense(units=n_hidden1,activation='relu',input_shape=(n_input,)))
model.add(Dense(units=n_hidden2,activation='relu'))
model.add(Dense(units=n_hidden3,activation='relu'))
model.add(Dense(units=n_hidden4,activation='relu'))
model.add(Dense(units=n_output,activation='softmax'))
return model
dmlp_adam=build_model()
dmlp_adam.compile(loss='categorical_crossentropy',optimizer=Adam(),metrics=['accuracy'])
hist_adam=dmlp_adam.fit(x_train,y_train,batch_size=batch_siz,epochs=n_epoch,validation_data=(x_test,y_test),verbose=2)
''' 'error:WARNING:tensorflow:Model 是用形状 (None, 4096) 构造的输入 KerasTensor(type_spec=TensorSpec(shape=(None, 4096), dtype=tf.float32, name='dense_input'), name ='dense_input', description="created by layer 'dense_input'"),但它是在形状不兼容的输入上调用的 (None, 4096, 3)。
ValueError:调用层“sequential”(类型 Sequential)时遇到异常。
Input 0 of layer "dense" is incompatible with the layer: expected axis -1 of input shape to have value 4096, but received input with shape (None, 4096, 3)
Call arguments received by layer "sequential" (type Sequential):
• inputs=tf.Tensor(shape=(None, 4096, 3), dtype=float32)
• training=True
• mask=None
'
选择过多的神经元可能会导致过度拟合并增加网络的训练时间。 隐藏神经元(单元)的数量最好介于输入层的大小和输出层的大小之间。 请在下面找到工作代码。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Flatten
import numpy as np
x_train=tf.random.uniform((4760,4096,3))
x_test=tf.random.uniform((240,4096,3))
# It generates labels randomly within the range of 0 to 5
import random
def Rand(start, end, num):
res = []
for j in range(num):
res.append(random.randint(start, end))
return res
# Train and Test labels
y_test=np.array(Rand(0,4,240))
y_train=np.array(Rand(0,4,4760))
y_train=tf.keras.utils.to_categorical(y_train)
y_test=tf.keras.utils.to_categorical(y_test)
print("x_train",x_train.shape)
print("y_train",y_train.shape)
print("x_test",x_test.shape)
print("y_test",y_test.shape)
# Changing the input shape from 4096 to (4096,3) resolves the issue as the input is of shape (4096,3).
n_input=(4096,3)
n_hidden1= 128 #5000
n_hidden2= 64 #2500
n_hidden3= 32 #2500
n_hidden4= 16 #2500
n_output=5
batch_siz=256
n_epoch=5
def build_model():
model=Sequential()
model.add(Dense(units=n_hidden1,activation='relu',input_shape=(n_input)))
model.add(Dense(units=n_hidden2,activation='relu'))
model.add(Dense(units=n_hidden3,activation='relu'))
model.add(Dense(units=n_hidden4,activation='relu'))
# Added flatten layer to overcome ValueError: Shapes (None, 5) and (None, 4096, 5) are incompatible
model.add(Flatten())
model.add(Dense(units=n_output,activation='softmax'))
return model
model=build_model()
model.summary()
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=batch_siz,epochs=n_epoch,validation_data=(x_test,y_test),verbose=2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.