在keras的所有代码示例中,我看到输入形状是直接传递的,并且推测批处理大小是第一个,例如:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)
但是,当涉及到自定义损失时,我看到使用了最后一个轴(轴=-1)。
def loss(y_true,y_pred):
return K.mean(K.square(y_pred
下面的代码是尼尔森的第一个mnist代码到Keras的翻译。令人惊讶的是,对于训练数据,.fit方法的最后一个精度值和.evaluate方法的精度值是不同的。正如我所预期的,对于验证数据,准确性是相同的。同样的行为也表现在损失上。我很想知道到底发生了什么。
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
num_classes = 10
input_shape = (28, 28, 1)
# the data, split between train and test s
我有一个生成器函数,它在一些图像目录上无限循环,并输出3元组的批处理表单。
[img1, img2], label, weight
其中img1和img2是batch_size x M x N x 3张量,label和weight分别是batch_size x 1张量。
在使用Keras训练模型时,我为fit_generator函数提供了这个生成器。
对于这个模型,我有一个自定义余弦对比损失函数,
def cosine_constrastive_loss(y_true, y_pred):
cosine_distance = 1 - y_pred
margin = 0.9
我一直在尝试用TensorFlow概率进行一些实验,我有几个问题。
KL损失系数的合适值是多少?
1. In the paper by Blundell (2015), the coefficient is set to `1/M` (where `M` is the number of mini-batches). In the example given by TFP, the coefficient is given as `1/mnist_data.train.num_examples`. Why?
2. As I go from 2d input to 3d images
我读到了TensorwFlow (tf)用户文档中的最小平方错误(MSE)。
当我硬编码MSE并打印计算出的每个损失时,我观察到一个与tf报告的值不同的值。
import numpy as np
import random
import tensorflow as tf
from tensorflow import keras
m = 200
n = 5
my_input= np.random.random([m,n])
my_output = np.random.random([m,1])
def obj(y_true,y_pred):
loss = tf.keras.