我是一名深度学习的初学者,我正在尝试使用Mobilenet_v2和Inception训练一个深度学习模型,以对不同的ASL手势进行分类。
下面是我的代码创建一个ImageDataGenerator,用于创建培训和验证集。
# Reformat Images and Create Batches
IMAGE_RES = 224
BATCH_SIZE = 32
datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
validation_split = 0.4
)
train_generator = datagen.flow_from_directory(
base_dir,
target_size = (IMAGE_RES,IMAGE_RES),
batch_size = BATCH_SIZE,
subset = 'training'
)
val_generator = datagen.flow_from_directory(
base_dir,
target_size= (IMAGE_RES, IMAGE_RES),
batch_size = BATCH_SIZE,
subset = 'validation'
)
以下是培训模型的代码:
# Do transfer learning with Tensorflow Hub
URL = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4"
feature_extractor = hub.KerasLayer(URL,
input_shape=(IMAGE_RES, IMAGE_RES, 3))
# Freeze pre-trained model
feature_extractor.trainable = False
# Attach a classification head
model = tf.keras.Sequential([
feature_extractor,
layers.Dense(5, activation='softmax')
])
model.summary()
# Train the model
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
EPOCHS = 5
history = model.fit(train_generator,
steps_per_epoch=len(train_generator),
epochs=EPOCHS,
validation_data = val_generator,
validation_steps=len(val_generator)
)
纪元1/5 94/94[===========================================================================-19s 199ms/步长-损耗:0.7333-精度:0.7730-val_损耗:0.6276-val_精度:0.7705
纪元2/5 94/94 [==============================] - 18s 190ms/步损: 0.1574-精度: 0.9893-val_loss: 0.5118-val_accuracy: 0.8145
纪元3/5 94/94[=====================================================================-18s 191ms/步长-损耗:0.0783-精度:0.9980-val\u损耗:0.4850-val\u精度:0.8235
纪元4/5 94/94 [==============================] - 18s 196毫秒/步损: 0.0492-精度: 0.9997-val_loss: 0.4541-val_accuracy: 0.8395
纪元5/5 94/94 [==============================] - 18s 193ms/阶跃-损耗: 0.0349-精度: 0.9997-val_loss: 0.4590-val_accuracy: 0.8365
我尝试过使用数据增强,但是模型仍然过适合,所以我想知道我的代码是否有错误。
您的数据非常小。尝试使用随机种子进行分割,并检查问题是否仍然存在。
如果是,那么使用正则化,降低神经网络的复杂性。
还可以尝试使用不同的优化器和较小的学习率(尝试lr scheduler)
这是我的CNN模型结构。 结果表明,该模型与训练数据吻合较好,验证数据的验证精度波动较大。 在7352个样本上训练,在2947个样本上验证Epoch 1/3000 7352/7352[===============================================================-3s 397us/样本-损失:0.1016-精度:0.9698-val损失:4.0896
我正在研究如何使用Mockito和Junit,现在测试一些片段。我不明白为什么我在Mock注释后在下面的代码中有NPE: 但是代码的第一部分工作得很好,尽管据我所知,这两个部分都是这样做的。 编辑:堆栈跟踪: null
下面是所讨论的程序的摘录。矩阵的大小为size×size,并在以下位置初始化: 然后,创建一个矩阵,这里的每个字段都是img矩阵中围绕它的9个字段的平均值。为了简单起见,边框留在0。 这就是节目的全部内容。为了完整起见,下面是前面的内容。后面没有代码。正如您所看到的,这只是初始化。 基本上,当大小是2048的倍数时,该程序是缓慢的,例如执行次数: 编译器是gcc。据我所知,这是因为内存管理,但我对
问题内容: 我的问题很清楚解释: 如果我这样做: 我得到以下输出:1970年1月1日星期四01:00:00 根据文档,我期望:1970年1月1日星期四00:00:00 CET 我想错了… 编辑:的确,我读文档太快了。1970年1月1日星期四00:00:00我应该有 那么,如何强制使用GMT并忽略所有本地时间? 编辑,解决方案: 问题答案: 该大纪元定义为00:00:00 1970-1-1上UTC。
我的代码有问题。由于某些原因,它不会显示我的第二个按钮b2,并且我无法设置第一个按钮的大小。我想在中间有两个按钮,中间有一些空间。
问题内容: 我有这种方法,可以在登录前检查用户名和密码。现在,我的for循环仅检查第一个项目,它发现第一个项目不满足第一个条件,因此与其去检查第二个项目,它只是中断并返回null。 为什么会这样? 这是我的方法: 问题答案: 因此,请尝试此代码。