- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用回归问题测试 Tensorflow 框架。我的输入有很多特征,而我的输出只有一个。目前,它正在工作,但我认为我的成本函数对于我想要的并不准确,所以我的准确度相当低。
我的目标是在实际输出的 10% 范围内预测输出,也就是说对于每个输出:
if (y_actual - y_predicted) < 0.1 * y_actual :
cost = 0
else :
cost = 1
因此对于预测输出向量:[130, 35, 65, 43]
与实际输出向量 [125, 10, 75, 40]
相比,我应该得到 2 的成本。(130 和40 位于 10%,35 和 65 不在)
目前,我使用平方差。
cost = tf.reduce_sum(tf.squared_difference(y_predicted,y_)/(2*nb_batches))
所以实际上,我对输出总和得到了相当好的预测,但如果我认为预测在实际输出的 10% 内是准确的,那么我的准确度只有 60%。我的准确度是这样写的:
with tf.name_scope('accuracy'):
with tf.name_scope('correct_prediction'):
correct_prediction = tf.less_equal(tf.abs((y_predicted-y_)), 0.1*tf.abs((y_))) # True if y_diff <= 10% * y_actual
with tf.name_scope('accuracy'):
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # count 1 if correct prediction is True ; else False ; Do the sum on all the data tested
tf.scalar_summary('accuracy', accuracy)
我尝试编写其他成本函数,例如:
cost = tf.reduce_sum(tf.cast((tf.greater_equal(tf.abs((y_predicted-y_)), 0.1*tf.abs(y_))),tf.float32)
但我收到错误:没有为任何变量提供渐变
。我认为这是因为我们无法得到tf.cast
的导数。
是否有正确的方法来编写适合我的需要的损失函数?我知道我想要的损失函数不是“可导的”。您认为将其转换为可导函数会是一个解决方案吗?
我不确定我说得是否清楚......
感谢您的帮助!
保罗
最佳答案
您可以使用
来代替比较运算符tf.nn.relu(tf.abs(y_predicted-y_)-tf.abs(y_))
获得可微的成本函数。
relu 操作计算 max(0, x),从而给出您正在做的事情的连续版本。主要区别在于,您将因距离较远而受到更多惩罚,因此您没有二元属性(但这通常是您在回归中的目标)。
这应该会产生比平方损失更好的结果。
关于python - 神经网络 : designing Cost function "not differentiable"/Tensorflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147671/
我有一个加权图,没有负权重,我想找到从一个节点到另一个节点的路径,试图最小化单个步骤的成本。我不需要最小化旅行的总成本(例如 Dijkstra 所做的),而是最小化平均步骤成本。但是,我有一个约束:K
我想使用 BigQuery 托管其他人可以查询的数据集,而不会对我的项目产生处理费用。我了解当我将数据集上传到项目时,存储成本与项目相关。我希望其他人能够发现我的数据集,通过 访问它他们的项目/帐户(
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
如果我们使用任何连接池框架或 Tomcat JDBC 池,那么打开和关闭数据库连接的成本是多少? 每当需要进行数据库操作时频繁打开和关闭数据库连接是一个好习惯吗? 或者同一个连接可以跨不同方法进行数据
如果我们使用任何连接池框架或 Tomcat JDBC 池,那么打开和关闭数据库连接的成本是多少? 每当需要进行数据库操作时频繁打开和关闭数据库连接是一个好习惯吗? 或者同一个连接可以跨不同方法进行数据
就软件而言,运营成本高昂或资源成本高昂是什么意思。当我遇到一些文档时,他们提到了诸如每次打开文件都是一项昂贵的操作之类的内容。我可以有更多这样的例子(数据库连接是一项昂贵的操作,线程池是一个更便宜的操
我的 redux 状态中有一个数据,大约有 100,000 个 json 记录(每个记录都有大约 8 个键值对)。 我在客户端编写了一个逻辑,每 30 秒刷新一次此数据(每 30 秒我调用服务器以获取
当我的应用程序启动时,我用我的 fragment 首选项中的值填充了一个容器类。我的想法是处理 SharedPreferences 和 PreferenceManager 一次,因为我猜它们很重。 这
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: How expensive is it to dereference a pointer in C++? 如果
我们如何解释 WEKA 中的成本矩阵?如果我有 2 个类要预测(第 0 类和第 1 类)并且想要将第 0 类的分类惩罚为第 1 类(比如惩罚加倍),那么矩阵格式究竟是什么? 是吗 : 0 10 20
我想通过以下方式保护对资源的访问: 所有线程都可以并发读取,更新期间除外(如果更新不是原子的)。 只能给一个线程分配更新任务,直到下一次需要更新。 这似乎是一个使用适当的 lock 或可能使所有操作成
我想知道是否有 (N) 个双 vector ,每个 vector 的长度都很大,例如 10,000,并且我想通过创建 (N) 个线程来对操作进行线程化(每个 vector 乘以 3)。 我想知道使用并
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
假设我们有一个数据库类(在 PHP 中——但它应该与任何语言相关),它在每次有查询时打开到 MySQL 服务器的连接。有些脚本会在每次执行时查询一次数据库,有些会查询两次,在同一次执行中最多可能有 4
我正在编写一个软件,其中有一部分处理读写操作。我想知道这些操作对 csv 文件的成本有多大。还有其他消耗时间更少的文件格式吗?因为我必须在每个周期结束时写入和读取 csv 文件。 最佳答案 读写操作取
我正在学习 C 并且对我在网上阅读的内容感到困惑。 在 http://www.cs.bu.edu/teaching/c/stack/array/ 我可以阅读: Let's look at the fu
我下学期要参加 comp 2210(数据结构),我一直在做在线发布的夏季学期的作业。到目前为止,我在做作业时没有遇到任何问题。看看下面的作业 4,看看你是否能给我一个关于如何处理它的提示。请不要提供完
我需要在页面上放置一个大约 20 个 Vue 组件。每个组件在挂载时都会为自己创建一个 onSnapshot,相应地,当它被删除时会创建一个 unsubscribe()。 const ref = fi
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: How costly is .NET reflection? 我目前的编程心态是反射是我最好的 friend
我刚刚开始掌握 Go(两天前开始,写了不到 1000 行),我还在想一些习语。 我需要按长度降序对一段字符串进行排序。我确实喜欢这样: func ... { ... do business .
我是一名优秀的程序员,十分优秀!