- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 keras tensorflow 后端在延时 IVF 胚胎图像数据集上实现 ResNet50 + LSTM 和注意力模型。
数据集包含大约 220 个样本,我使用 85% - 15% 的训练/验证拆分(203 个用于训练,27 个用于验证)。
我的模型能够达到 0.80+ 的训练精度,但验证精度停留在 0.5 左右或仅停留在 0.5,验证损失几乎是训练损失的两倍。
这只是一个过拟合问题吗?
如果没有,我该如何调试并提高验证集的性能?
#我尝试过的事情:
我尝试添加正则化(L1,0.01)/Dropout 层(0.5)/减少神经元(1024 到 512 到 256)但它们都不起作用)
我还通过减去平均值并除以标准差来标准化我的数据。
我正在使用 Adam 优化器,其学习率为 1e-5,没有权重衰减。图像在训练前被打乱。
#下面是我的模型和进度条的代码
#进度条:
Epoch 1/40
150/150 [==============================] - 28s 189ms/step - loss: 2.1318 - acc: 0.5267 - val_loss: 4.8806 - val_acc: 0.5556
Epoch 00001: val_loss improved from inf to 4.88055, saving model to result/resnetmodel.hdf5
Epoch 2/40
150/150 [==============================] - 14s 94ms/step - loss: 1.9957 - acc: 0.5867 - val_loss: 4.8210 - val_acc: 0.5000
Epoch 00002: val_loss improved from 4.88055 to 4.82100, saving model to result/resnetmodel.hdf5
Epoch 3/40
150/150 [==============================] - 14s 94ms/step - loss: 1.8062 - acc: 0.6200 - val_loss: 4.9689 - val_acc: 0.5000
Epoch 00003: val_loss did not improve from 4.82100
Epoch 4/40
150/150 [==============================] - 14s 91ms/step - loss: 1.7516 - acc: 0.6267 - val_loss: 5.0284 - val_acc: 0.5000
Epoch 00004: val_loss did not improve from 4.82100
Epoch 5/40
150/150 [==============================] - 14s 94ms/step - loss: 1.6508 - acc: 0.7000 - val_loss: 4.9873 - val_acc: 0.4444
Epoch 00005: val_loss did not improve from 4.82100
Epoch 6/40
150/150 [==============================] - 14s 92ms/step - loss: 1.5003 - acc: 0.7733 - val_loss: 4.9800 - val_acc: 0.4444
Epoch 00006: val_loss did not improve from 4.82100
Epoch 7/40
150/150 [==============================] - 14s 96ms/step - loss: 1.4614 - acc: 0.7667 - val_loss: 4.9435 - val_acc: 0.5000
Epoch 00007: val_loss did not improve from 4.82100
Epoch 8/40
150/150 [==============================] - 14s 90ms/step - loss: 1.5480 - acc: 0.6800 - val_loss: 4.9345 - val_acc: 0.5000
Epoch 00008: val_loss did not improve from 4.82100
Epoch 9/40
150/150 [==============================] - 14s 93ms/step - loss: 1.4334 - acc: 0.7667 - val_loss: 5.0452 - val_acc: 0.5000
Epoch 00009: val_loss did not improve from 4.82100
Epoch 10/40
150/150 [==============================] - 14s 94ms/step - loss: 1.4344 - acc: 0.7667 - val_loss: 5.1768 - val_acc: 0.4444
Epoch 00010: val_loss did not improve from 4.82100
Epoch 11/40
150/150 [==============================] - 15s 98ms/step - loss: 1.3369 - acc: 0.8533 - val_loss: 5.1331 - val_acc: 0.4444
Epoch 00011: val_loss did not improve from 4.82100
Epoch 12/40
150/150 [==============================] - 14s 93ms/step - loss: 1.2834 - acc: 0.8133 - val_loss: 5.1265 - val_acc: 0.4444
Epoch 00012: val_loss did not improve from 4.82100
Epoch 13/40
150/150 [==============================] - 14s 91ms/step - loss: 1.3007 - acc: 0.8200 - val_loss: 5.1941 - val_acc: 0.4444
Epoch 00013: val_loss did not improve from 4.82100
Epoch 14/40
150/150 [==============================] - 14s 94ms/step - loss: 1.2358 - acc: 0.8533 - val_loss: 5.3716 - val_acc: 0.4444
Epoch 00014: val_loss did not improve from 4.82100
Epoch 15/40
150/150 [==============================] - 14s 92ms/step - loss: 1.2823 - acc: 0.8000 - val_loss: 5.3877 - val_acc: 0.4444
纪元 00015:val_loss 没有从 4.82100 提高
纪元 00015:提前停止
评价:----加载数据
----prediction_on_eval-----
事实=[1。 0.], 预测=[0.03809702 0.96190304]
事实=[1。 0.],预测=[0.9803326 0.0196674]
事实=[1。 0.], 预测=[9.9986279e-01 1.3717638e-04]
事实=[1。 0.],预测=[0.98158103 0.01841903]
事实=[1。 0.],预测=[0.99492776 0.00507224]
事实=[1。 0.],预测=[0.70435154 0.29564843]
事实=[1。 0.], 预测=[4.1277369e-04 9.9958724e-01]
事实=[1。 0.], 预测=[0.9818978 0.01810225]
事实=[1。 0.],预测=[0.91195923 0.08804072]
事实=[0。 1.], 预测=[0.986312 0.013688]
事实=[0。 1.], 预测=[0.9985434 0.00145668]
事实=[0。 1.], 预测=[0.80424094 0.195759 ]
事实=[0。 1.], 预测=[0.9214819 0.07851809]
事实=[0。 1.], 预测=[0.03754392 0.96245605]
事实=[0。 1.], 预测=[9.9976009e-01 2.3989924e-04]
事实=[0。 1.], 预测=[0.98681134 0.01318868]
事实=[0。 1.], 预测=[0.9984666 0.0015334]
事实=[0。 1.], 预测=[0.7229417 0.27705824]
#这是我的模型:
x =Input(shape = (40, config.img_shape, config.img_shape, config.img_channel))
if config.base_model == "inception_v3":
cnn = InceptionV3(weights = None, include_top=False, pooling = "avg")
elif config.base_model == 'ResNet50':
cnn = ResNet50(weights = None, include_top=False, pooling = "avg")
cnn.load_weights(config.pretrained_path)
for layer in cnn.layers:
layer.trainable = False
extracted_features = TimeDistributed(cnn)(x)
activations = Bidirectional(LSTM(config.num_units_lstm, return_sequences=True, recurrent_activation = 'relu', recurrent_initializer = 'glorot_uniform', name='Bidirectional_LSTM'))(extracted_features)
activations = Dropout(0.5)(activations)
attention = TimeDistributed(Dense(1, activation='tanh'),name = "context_vector")(activations)
attention = Flatten()(attention)
attention = Activation('softmax', name = "conext_weights")(attention)
attention = RepeatVector(config.num_units_lstm*2)(attention)
attention = Permute([2, 1])(attention)
sent_representation = merge.multiply([activations, attention])
sent_representation = Lambda(lambda xin: K.sum(xin, axis=1))(sent_representation)
sent_representation = BatchNormalization()(sent_representation)
prediction = Dense(config.num_classes, activation = 'softmax')(sent_representation)
model = Model(inputs = x, outputs = prediction)
最佳答案
The dataset consist of about 220 samples and I am using a 85% - 15% train/validation split (203 on training and 27 on validation).
Is this only an over-fitting problem?
听起来很有可能,是的。 220 个样本对于这样一个深度网络来说是非常非常小的数据集。从如此小的数据集学习泛化能力真的不太可能。
If not, how could I debug and improve the performance on validation set?
在理想情况下,再获取大约 100,000 个样本并将它们添加到您的数据集中!
接受这可能是不切实际的,您可以尝试以下策略之一或组合:
关于python - 训练精度提高但验证精度保持在 0.5,模型预测每个验证样本几乎相同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469505/
我正在使用 R 预测包拟合模型,如下所示: fit <- auto.arima(df) plot(forecast(fit,h=200)) 打印原始数据框和预测。当 df 相当大时,这
我正在尝试预测自有住房的中位数,这是一个行之有效的例子,给出了很好的结果。 https://heuristically.wordpress.com/2011/11/17/using-neural-ne
type="class"函数中的type="response"和predict有什么区别? 例如: predict(modelName, newdata=testData, type = "class
我有一个名为 Downloaded 的文件夹,其中包含经过训练的 CNN 模型必须对其进行预测的图像。 下面是导入图片的代码: import os images = [] for filename i
关于预测的快速问题。 我尝试预测的值是 0 或 1(它设置为数字,而不是因子),因此当我运行随机森林时: fit , data=trainData, ntree=50) 并预测: pred, data
使用 Python,我尝试使用历史销售数据来预测产品的 future 销售数量。我还试图预测各组产品的这些计数。 例如,我的专栏如下所示: Date Sales_count Department It
我是 R 新手,所以请帮助我了解问题所在。我试图预测一些数据,但预测函数返回的对象(这是奇怪的类(因子))包含低数据。测试集大小为 5886 obs。 160 个变量,当预测对象长度为 110 时..
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
下面是我的神经网络代码,有 3 个输入和 1 个隐藏层和 1 个输出: #Data ds = SupervisedDataSet(3,1) myfile = open('my_file.csv','r
我正在开发一个 Web 应用程序,它具有全文搜索功能,可以正常运行。我想对此进行改进并向其添加预测/更正功能,这意味着如果用户输入错误或结果为 0,则会查询该输入的更正版本,而不是查询结果。基本上类似
我对时间序列还很陌生。 这是我正在处理的数据集: Date Price Location 0 2012-01-01 1771.0
我有许多可变长度的序列。对于这些,我想训练一个隐马尔可夫模型,稍后我想用它来预测(部分)序列的可能延续。到目前为止,我已经找到了两种使用 HMM 预测 future 的方法: 1) 幻觉延续并获得该延
我正在使用 TensorFlow 服务提供初始模型。我在 Azure Kubernetes 上这样做,所以不是通过更标准和有据可查的谷歌云。 无论如何,这一切都在起作用,但是我感到困惑的是预测作为浮点
我正在尝试使用 Amazon Forecast 进行一些测试。我现在尝试了两个不同的数据集,它们看起来像这样: 13,2013-03-31 19:25:00,93.10999 14,2013-03-3
使用 numpy ndarray大多数时候我们不需要担心内存布局的问题,因为结果并不依赖于它。 除非他们这样做。例如,考虑这种设置 3x2 矩阵对角线的稍微过度设计的方法 >>> a = np.zer
我想在同一个地 block 上用不同颜色绘制多个预测,但是,比例尺不对。我对任何其他方法持开放态度。 可重现的例子: require(forecast) # MAKING DATA data
我正在 R 中使用 GLMM,其中混合了连续变量和 calcategories 变量,并具有一些交互作用。我使用 MuMIn 中的 dredge 和 model.avg 函数来获取每个变量的效果估计。
我能够在 GUI 中成功导出分类器错误,但无法在命令行中执行此操作。有什么办法可以在命令行上完成此操作吗? 我使用的是 Weka 3.6.x。在这里,您可以右键单击模型,选择“可视化分类器错误”并从那
我想在同一个地 block 上用不同颜色绘制多个预测,但是,比例尺不对。我对任何其他方法持开放态度。 可重现的例子: require(forecast) # MAKING DATA data
我从 UCI 机器学习数据集库下载了一个巨大的文件。 (~300mb)。 有没有办法在将数据集加载到 R 内存之前预测加载数据集所需的内存? Google 搜索了很多,但我到处都能找到如何使用 R-p
我是一名优秀的程序员,十分优秀!