python - Logits 和标签必须是可广播的错误?
问题描述
我对深度学习很陌生。我正在对动漫插图图像进行培训,但收到错误消息:logits and labels must be broadcastable: logits_size=[214,2] labels_size=[214,173]
我确信我的代码中还有其他错误,但我不确定在哪里查看。我运行了 model.summary() 并注意到总参数:12,219,618 可训练参数:7,080,962 不可训练参数:5,138,656
我真的很感激任何帮助。谢谢。
import tensorflow as tf
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Activation, Dropout, Flatten, Dense
from tensorflow.keras import backend as K
from tensorflow.keras import metrics, optimizers
import matplotlib.pyplot as plt
train_datagen = ImageDataGenerator(
rescale=1. / 255,
rotation_range = 30,
zoom_range = 0.2,
width_shift_range=0.1,
height_shift_range=0.1,
validation_split = 0.15)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size = (75,75),
batch_size = 214,
class_mode = 'categorical',
subset='training')
#validation_generator = test_datagen.flow_from_directory(
# validation_dir,
# target_size = (75,75),
# batch_size = 37,
# class_mode = 'categorical',
# subset = 'validation')
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(75,75),
batch_size = 32,
class_mode = 'categorical')
# Inspect batch
sample_training_images, _ = next(train_generator)
from tensorflow.keras.applications.inception_v3 import InceptionV3
def model_output_for_TL (pre_trained_model, last_output):
x = Flatten()(last_output)
# Dense hidden layer
x = Dense(1024, activation='relu')(x)
x = Dropout(0.5)(x)
# Output neuron.
x = Dense(2, activation='softmax')(x)
model = Model(pre_trained_model.input, x)
return model
pre_trained_model = InceptionV3(input_shape = (75, 75, 3),
include_top = False,
classes=173,
weights = 'imagenet')
for layer in pre_trained_model.layers:
layer.trainable = False
last_layer = pre_trained_model.get_layer('mixed5')
last_output = last_layer.output
model_TL = model_output_for_TL(pre_trained_model, last_output)
model_TL.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
history_TL = model_TL.fit(
train_generator,
steps_per_epoch=10,
epochs=60,
verbose=2)
#validation_data = validation_generator)
tf.keras.models.save_model(model_TL,'my_model.hdf5')
解决方案
推荐阅读
- python - 如何将泡菜文件转换为 JSON 格式?
- css - 隐藏 Material UI Grid item 并让下一个 Grid Item 滑入它的位置
- java - 在案例查询中显式转换枚举
- jmeter - JMeter 中的 GoTo 语句行为
- bash - 如何使用 Bash 替换 IP 地址中的最后一个八位字节?
- swagger - Swagger JSON - 如何更改“$ref”默认值?
- python - 使用 AppFactory 结构时使用 Flask-Sqlalchemy 反射表会引发运行时错误
- ios - 浮动面板。面板内导航
- apache-spark - 如何处理从最后一个输出到接收器的流中的消息?
- html - 如何在目标 C 中保存 HTML 字符串中的值?