【发布时间】:2020-08-31 09:13:32
【问题描述】:
我在空间中生成随机分布的数据点,形成一个环。我这样做直到获得一定数量的戒指,然后我将其转换为图像。看起来像这样:
之后,我将这些图像作为 CNN 的输入,以训练网络在一张图像中的环数。
print(X_train_CNN.shape, X_test_CNN.shape, Y_train_CNN.shape, Y_test_CNN.shape)
(4000, 32, 32, 1) (1000, 32, 32, 1) (4000,) (1000,)
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D
model = Sequential()
model.add(Conv2D(28, kernel_size=(3,3), input_shape=(imgsize, imgsize, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation=tf.nn.relu))
model.add(Dropout(0.2))
model.add(Dense(maxcircles,activation=tf.nn.softmax))
学习曲线和预测如下所示:
如您所见,分类效果很好。
除了每个图像的环数之外,我还想预测圆的半径。 但这些是根本不同的任务,因为一个是回归,另一个是分类。
有没有办法只用一个 CNN 来完成这两项任务? 以及如何突出显示图像中正确分类的圆圈? (比如物体检测)
【问题讨论】:
-
使用The Functional API训练多重损失模型。
标签: machine-learning keras neural-network conv-neural-network