相关疑难解决方法(0)

损失和准确性 - 这些合理的学习曲线吗?

我正在学习神经网络,我在Keras中为UCI机器学习库中的虹膜数据集分类构建了一个简单的网络.我使用了一个带有8个隐藏节点的隐藏层网络.使用Adam优化器的学习率为0.0005,并且运行200个时期.Softmax用于输出,损失为catogorical-crossentropy.我得到以下学习曲线.

学习曲线

正如您所看到的,准确性的学习曲线有很多平坦的区域,我不明白为什么.错误似乎在不断减少,但准确性似乎并没有以同样的方式增加.精确度学习曲线中的平坦区域意味着什么?为什么即使错误似乎在减少,这些区域的准确度也不会增加?

这在培训中是正常的还是我更有可能在这里做错了什么?

dataframe = pd.read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
y = dataset[:,4]

scalar = StandardScaler()
X = scalar.fit_transform(X)

label_encoder = LabelEncoder()
y = label_encoder.fit_transform(y)

encoder = OneHotEncoder()
y = encoder.fit_transform(y.reshape(-1,1)).toarray()

# create model
model = Sequential()
model.add(Dense(8, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))

# Compile model
adam = optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy',
              optimizer=adam, 
              metrics=['accuracy'])

# Fit the model
log = model.fit(X, y, epochs=200, batch_size=5, validation_split=0.2)

fig = plt.figure()
fig.suptitle("Adam, lr=0.0006, one hidden layer")

ax = fig.add_subplot(1,2,1) …
Run Code Online (Sandbox Code Playgroud)

classification machine-learning loss neural-network keras

9
推荐指数
1
解决办法
2916
查看次数

使用 Keras 了解 WeightedKappaLoss

我正在使用 Keras 尝试使用一系列事件来预测分数 (0-1) 的向量。

例如,X是由 3 个向量组成的序列,每个向量包含 6 个特征,而y是一个包含 3 个分数的向量:

X
[
  [1,2,3,4,5,6], <--- dummy data
  [1,2,3,4,5,6],
  [1,2,3,4,5,6]
]

y
[0.34 ,0.12 ,0.46] <--- dummy data
Run Code Online (Sandbox Code Playgroud)

我想将问题作为序数分类来解决,因此如果实际值是[0.5,0.5,0.5]预测值,[0.49,0.49,0.49]那么[0.3,0.3,0.3]. 我的原始解决方案是sigmoid在我的最后一层使用激活mse作为损失函数,因此每个输出神经元的输出范围在 0-1 之间:

def get_model(num_samples, num_features, output_size):
    opt = Adam()
    model = Sequential()
    
    model.add(LSTM(config['lstm_neurons'], activation=config['lstm_activation'], input_shape=(num_samples, num_features)))
    model.add(Dropout(config['dropout_rate']))

    for layer in config['dense_layers']:
      model.add(Dense(layer['neurons'], activation=layer['activation']))

    model.add(Dense(output_size, activation='sigmoid'))
    model.compile(loss='mse', optimizer=opt, metrics=['mae', 'mse'])

    return model
Run Code Online (Sandbox Code Playgroud)

我的目标是了解WeightedKappaLoss的用法并在我的实际数据上实现它。我创建了这个 Colab …

python keras tensorflow cohen-kappa ordinal-classification

8
推荐指数
1
解决办法
523
查看次数