我正在尝试基于图像集数据集训练一个神经网络程序来识别简单的图片,例如黑色背景上的白色方块。 因此,一旦我创建了简单的图像,我就在模型上使用了 keras 的拟合函数,但出现了这个错误:没有为任何变量提供梯度
这是代码。
size_img=100
nb_img=30
for n in range(nb_img):
horiz=np.sort(np.random.rand(2)*size_img).astype(int)
vert=np.sort(np.random.rand(2)*size_img).astype(int)
shade_dark=np.random.rand()*100 #between 0 and 100
shade_light=np.random.rand()*100 + 155 #between 155 and 255
img = np.zeros(shape = (size_img, size_img)).astype('uint8') + int(shade_dark)
img[horiz[0]:horiz[1], vert[0]:vert[1]] = shade_light
mask = np.zeros(shape = (size_img, size_img)).astype('uint8')
mask[horiz[0]:horiz[1], vert[0]:vert[1]] = 1
for i in range(size_img):
for j in range(size_img):
img[i][j] = img[i][j]# + np.random.normal(0, 7)
img=Image.fromarray(img, 'L')
mask=Image.fromarray(mask, 'L')
img.save('/Users/william/Desktop/rectangles'+str(n)+'.png')
mask.save('/Users/william/Desktop/mask'+str(n)+'.png')
listx=[0 for i in range(nb_img)]
for n in range(nb_img):
img_path = '/Users/william/Desktop/rectangles'+str(n)+'.png'
imga = image.load_img(img_path, target_size=(224, 224))
xn=np.expand_dims(imga, axis=0)
xn = preprocess_input(xn)
listx[n]=xn
listy=[0 for i in range(nb_img)]
for n in range(nb_img):
mask_path = '/Users/william/Desktop/mask'+str(n)+'.png'
imgb = image.load_img(mask_path, target_size=(224, 224))
yn=np.expand_dims(imgb, axis=0)
yn = preprocess_input(yn)
listy[n]=yn
model.fit(listx[0],listy[0])
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
model = ResNet50(include_top=False, weights='imagenet')
model.trainable=True
model.compile(loss = 'mean_absolute_error',optimizer='Adam')