更新: 我正在使用 keras:2.2.0 张量流:2.4.1 蟒蛇 3.7.9
我正在使用 keras Sequential 模型来处理猫 vs 狗 CNN,因此我遇到了错误,后面跟着很多 <class 'int'>
,我正在学习的教程在这个 link
import tensorflow as tf
import pickle
import os
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation,Flatten
from keras.layers import Conv2D,MaxPooling2D
os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'
pickle_in=open(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/x.pickle','rb')
x=pickle.load(pickle_in)
pickle_in=open(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/y.pickle','rb')
y=pickle.load(pickle_in)
x=x/255 #scaling down features to [0,1]
print(x)
model=Sequential()
model.add(Conv2D(256,(3,3),input_shape=x.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(256,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x,y,batch_size=4,epochs=10,validation_split=0.3)
model.save(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/Dogs_VS_Cats_CNN.model')
print("GPUs: ", len(tf.config.experimental.list_physical_devices('GPU')))
这是我遇到的错误:UNKNOWN ERROR
答案 0 :(得分:0)
我想您在定义第一层或输入数据的正确形状时遇到了问题。我不确定,因为不知道您的数据详细信息。但是,工作示例代码,包括您案例中的示例培训:
import tensorflow as tf
import pickle
import os
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation,Flatten,Input
from keras.layers import Conv2D,MaxPooling2D
os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'
#pickle_in=open(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/x.pickle','rb')
#x=pickle.load(pickle_in)
#pickle_in=open(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/y.pickle','rb')
#y=pickle.load(pickle_in)
#Test data...
x=tf.random.uniform((16,16,3))
y=tf.random.uniform((1,1))
x=x/255 #scaling down features to [0,1]
print(x)
model=Sequential()
model.add(Conv2D(256,(3,3),input_shape=x.shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(256,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
#Let's create a sample training data...
x_train=tf.random.uniform((10,16,16,3))
y_train=tf.random.uniform((10,1))
model.fit(x_train,y_train,batch_size=4,epochs=10,validation_split=0.3)
#model.save(r'C:\Users\dell\Documents\Python learning\kagglecatsanddogs_3367a/Dogs_VS_Cats_CNN.model')
print("GPUs: ", len(tf.config.experimental.list_physical_devices('GPU')))
#Just for example...
for kierros in range(5):
n=10+kierros
x_train=tf.random.uniform((n,16,16,3))
y_train=tf.random.uniform((n,1))
print("Now the model is ready to take in the real training data with input shape: ",x_train.shape, " and target shape: ",y_train.shape, " in case of ", len(y_train), " training examples...")
print("...etc.")
...首先运行代码并验证您是否看到训练运行良好并且输出如下所示:
...如果是,那么只需添加您的真实数据,但要注意数据的输入形状是正确的。例如,如果您有十张大小为 16x16x3(非常小的 RGB 图像)的图片,则训练输入数据形状为 (10,16,16,3) 等。