标签: multipleoutputs

Keras多输出:自定义丢失功能

我在keras中使用多输出模型

model1 = Model(input=x, output=[y2,y3])

model1.compile((optimizer='sgd', loss=cutom_loss_function)
Run Code Online (Sandbox Code Playgroud)

custom_loss_function的;

def custom_loss(y_true, y_pred):
   y2_pred = y_pred[0]
   y2_true = y_true[0]

   loss = K.mean(K.square(y2_true - y2_pred), axis=-1)
   return loss
Run Code Online (Sandbox Code Playgroud)

我只想在输出上训练网络y2.

当使用多个输出时,损失函数中的参数y_predy_true参数的形状/结构是什么?我可以按上述方式访问它们吗?难道y_pred[0]还是y_pred[:,0]

model prediction loss multipleoutputs keras

19
推荐指数
2
解决办法
2万
查看次数

在 Keras 中输出由 add_loss 添加的多个损失

我研究了由变分自动编码器 (VAE) 演示的自定义损失层的 Keras 示例。他们在示例中只有一个损失层,而 VAE 的目标由两个不同的部分组成:重建和 KL-Divergence。但是,我想绘制/可视化这两个部分在训练期间如何演变并将单个自定义损失分成两个损失层:

Keras 示例模型:

在此处输入图片说明

我的型号:

在此处输入图片说明

不幸的是,Keras 只在我的多重损失示例中输出一个单一的损失值,如我的 Jupyter Notebook 示例中所示,我已经实现了这两种方法。有人知道如何获得由 增加的每个损失的值add_loss吗?此外,在给定多次add_loss调用(均值/总和/...?)的情况下,Keras 如何计算单个损失值?

python multipleoutputs deep-learning keras tensorflow

10
推荐指数
2
解决办法
6073
查看次数

Hadoop具有推测执行的多个输出

我有一个任务,它将avro输出写入由输入记录的几个字段组织的多个目录中.

For example : 
Process records of countries across years 
and write in a directory structure of country/year 
eg:
outputs/usa/2015/outputs_usa_2015.avro 
outputs/uk/2014/outputs_uk_2014.avro
AvroMultipleOutputs multipleOutputs=new AvroMultipleOutputs(context);
....
....
     multipleOutputs.write("output", avroKey, NullWritable.get(), 
            OUTPUT_DIR + "/" + record.getCountry() + "/" + record.getYear() + "/outputs_" +record.getCountry()+"_"+ record.getYear());
Run Code Online (Sandbox Code Playgroud)

下面的代码用什么输出提交器来编写输出.用于推测执行是不安全的?通过推测执行,这会导致(可能导致)org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException

在这篇文章中 Hadoop Reducer:如何使用推测执行输出到多个目录? 建议使用自定义输出提交器

来自hadoop AvroMultipleOutputs的以下代码未说明推测执行的任何问题

 private synchronized RecordWriter getRecordWriter(TaskAttemptContext taskContext,
          String baseFileName) throws IOException, InterruptedException {

    writer =
                ((OutputFormat) ReflectionUtils.newInstance(taskContext.getOutputFormatClass(),
                    taskContext.getConfiguration())).getRecordWriter(taskContext);
...
}
Run Code Online (Sandbox Code Playgroud)

如果baseoutput路径在作业目录之外,write方法也不会记录任何问题

public void write(String namedOutput, Object key, Object value, String baseOutputPath)
Run Code Online (Sandbox Code Playgroud)

在作业目录外写作时,AvroMultipleOutputs(其他输出)是否存在推测执行的实际问题?如果,那么我如何覆盖AvroMultipleOutputs以拥有它自己的输出提交器.我在AvroMultipleOutputs中看不到任何输出格式,它使用的输出提交者

java hadoop speculative-execution hadoop-yarn multipleoutputs

7
推荐指数
1
解决办法
617
查看次数

如何训练多输出深度学习模型?

我想我不了解多输出网络。

我一直都了解实现的实现方式,并且成功地训练了一个这样的模型,但我不了解如何训练多输出深度学习网络。我的意思是,培训期间网络内部发生了什么?

keras功能性API指南中的以下网络为例:

在此处输入图片说明

您可以看到两个输出(aux_output和main_output)。反向传播如何运作?

我的直觉是该模型进行两次反向传播,每个输出一次。然后,每个反向传播都会更新退出之前的图层的权重。 但这似乎是不正确的:这里(SO),我得到的信息是,尽管有多个输出,但只有一个反向传播;根据输出对使用的损失进行加权。

但是,我仍然不知道如何训练网络及其辅助分支。由于未直接连接到主输出,辅助分支权重如何更新?网络的辅助分支的根与主输出之间的部分是否受到损失加权的影响?还是权重仅影响连接到辅助输出的网络部分?

另外,我正在寻找有关此主题的好文章。我已经读过GoogLeNet / Inception文章(v1v2-v3),因为该网络正在使用辅助分支。

backpropagation neural-network multipleoutputs deep-learning keras

6
推荐指数
1
解决办法
196
查看次数

如何在 Keras 中实现具有多个输出的自定义层?

就像标题中所述,我想知道如何让自定义层返回多个张量:out1、out2、...outn?
我试过

keras.backend.concatenate([out1, out2], axis = 1)
Run Code Online (Sandbox Code Playgroud)

但这仅适用于具有相同长度的张量,并且它必须是另一种解决方案,而不是每次都将两个张量连接起来,是吗?

python layer output multipleoutputs keras

6
推荐指数
1
解决办法
5767
查看次数

如何在scala的spark输出文件中添加partitionBy列名作为前缀

我对这个问题做了很多研究,但没有找到令人满意的答案。我必须重命名来自 spark 的输出文件。

目前我在 S3 中输出我的 spark 数据帧,然后我再次读取它,然后再次重命名和复制。问题是我的 spark 作业需要 16 分钟才能完成,但从 S3 读取然后在 S3 中重新命名和写入又需要 15 分钟。

有什么办法可以重命名我的输出文件..我没问题 part-00000

这就是我保存数据框的方式

dfMainOutputFinalWithoutNull.repartition(50).write.partitionBy("DataPartition", "PartitionYear")
      .format("csv")
      .option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
      .option("nullValue", "")
      .option("delimiter", "\t")
      .option("quote", "\u0000")
      .option("header", "true")
      .option("codec", "bzip2")
      .save(outputFileURL)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,任何想法如何使用 hadoop 文件格式?

目前我正在这样做,如下所示

val finalFileName = finalPrefix + DataPartitionName + "." + YearPartition + "." + intFileCounter + "." + fileVersion + currentTime + fileExtention
      val dest = new Path(mainFileURL + "/" + finalFileName)
      fs.rename(urlStatus.getPath, dest)
Run Code Online (Sandbox Code Playgroud)

问题是我有 50GB 的输出数据,它创建了非常多的文件,重命名这么多文件需要很长时间。

成本明智也很昂贵,因为我的 …

scala multipleoutputs apache-spark hadoop2 spark-dataframe

5
推荐指数
0
解决办法
614
查看次数