python - 使用欧几里得距离损失函数的keras
问题描述
我对 Keras 自定义损失函数有一些问题。当我使用这个损失函数运行我的 Keras 模型时,我的损失值为NaN
.
def euc_dist_keras(y_true, y_pred):
return K.mean(K.sqrt(K.sum(K.square(y_true - y_pred), axis = -1, keepdims = True)))
这是我的代码。
(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
X_train4D = X_train.reshape(X_train.shape[0],28,28,1).astype("float32")
X_test4D = X_test.reshape(X_test.shape[0],28,28,1).astype("float32")
X_train4D_normalize = X_train4D/255
X_test4D_normalize = X_test4D/255
Y_trainOneHot = np_utils.to_categorical(Y_train)
Y_testOneHot = np_utils.to_categorical(Y_test)
model = Sequential()
model.add(Conv2D(filters=16,kernel_size=(5,5),padding='same',input_shape=(28,28,1),activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(filters=36,kernel_size=(5,5),padding='same',input_shape=(14,14,1),activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128,activation='relu'))
model.add(Dropout(0.5))
#output layer
model.add(Dense(10,activation='softmax'))
print(model.summary())
model.compile(loss=euc_dist_keras,optimizer='adam',metrics=['accuracy'])
train_history = model.fit(x=X_train4D_normalize,y=Y_trainOneHot,validation_split=0.2\
,epochs=10,batch_size=1,verbose=1)
解决方案
推荐阅读
- javascript - WithStore:无法读取未定义的属性“状态”(纯反应轮播)
- optimization - 如何使用 MathProg (GLPK) 或其 API 实现极小极大组合优化问题
- ruby-on-rails - rails 迁移更改了不相关的列
- c++ - std::move 和 C++ 中的引用传递有什么区别?
- vba - 在 QueryDefs 中找不到 RecordsetType 属性作为有效属性
- html - 如何在 CSS 中设置默认页面尺寸?
- php - 连接到 AWS RDS 数据库的非 AWS 服务器要慢得多
- swift - UIButton 未添加到子视图 swift
- angular - Angular/TypeScript - 联合类型访问
- python - 如何使用“jupyter-run”在本地调用 jupyter notebook?