我正在 Delphi 中使用 TIdTCPClient/TIdTcpServer indy 组件编写客户端-服务器应用程序。
数据传输通常工作正常,但我经常从服务器读取错误的数据;我得到了以前请求的答案,而不是当前的答案。
在调试期间,两个应用程序都在本地工作,因此传输过程中数据不会丢失。
超时为 1000-3000 毫秒,这足以避免在收到第一个请求的答复之前发送第二个请求。
我使用简单的数据格式:前4个字节是数据包长度,其余是该长度的二进制数据。
服务器端代码是(简化为仅发送字符串;我也以相同的方式使用二进制缓冲区,但此代码更易于理解和检查):
Var
lng: LongInt;
ib: TIdBytes;
begin
// Prepare data to send:
lng:=length(s);// s is an AnsiString to be sent
SetLength(ib,lng+4);
Move(lng,ib[0],4);
Move(s[1],ib[4],length(s));
// Send:
AContext.Connection.IOHandler.WriteDirect(ib);
end;
Run Code Online (Sandbox Code Playgroud)
发送请求的客户端代码是相同的(在最后一行调用 TIdTcpClient.IOHandler.WriteDirect())。读取服务器答案的客户端代码是:
Var
ib: TIdBytes;
size,done,lng: LongInt;
begin
Result:=false;
// answer length:
try
SetLength(ib,0);
tcp.IOHandler.ReadBytes(ib,4,false);
Move(ib[0],size,4);
if length(ib)<0 then Exit;// wrong data
except
on E: Exception do;// code skipped
end;
// read answer body:
done:=0;
b.Clear;// b is my buffer, TStream …Run Code Online (Sandbox Code Playgroud) 我正在使用 Keras 2.0.2 功能 API (Tensorflow 1.0.1) 来实现一个网络,该网络接受多个输入并产生两个输出a和b. 我需要使用 cosine_proximity 损失来训练网络,这b就是a。我该怎么做呢?
在这里分享我的代码。最后一行model.fit(..)是有问题的部分,因为我本身没有标记数据。标签是由模型本身生成的。
from keras.models import Model
from keras.layers import Input, LSTM
from keras import losses
shared_lstm = LSTM(dim)
q1 = Input(shape=(..,.. ), name='q1')
q2 = Input(shape=(..,.. ), name='q2')
a = shared_lstm(q1)
b = shared_lstm(q2)
model = Model(inputs=[q1,q2], outputs=[a, b])
model.compile(optimizer='adam', loss=losses.cosine_proximity)
model.fit([testq1, testq2], [?????])
Run Code Online (Sandbox Code Playgroud) 我正在尝试为视频输入的模型训练实现 VGG 感知损失。我实现了感知损失,就像问题AttributeError: 'Tensor' object has no attribute '_keras_history'中的建议一样:
我的 mainModel 如下图所示: Graph of mainModel
输入大小为(bathsize, frame_num, row, col, channel). 我想要得到中框的感知损失,即frame_num/2。
因此,我实现了以下损失模型:
lossModel = VGG19(weights='imagenet')
lossModel = Model(inputs=lossModel.input,outputs=lossModel.get_layer('block3_conv4').output)
lossOut = lossModel(mainModel.output[:,frame_num/2])
fullModel = Model(mainModel.input,lossOut)
Run Code Online (Sandbox Code Playgroud)
但我在该行中遇到了一条错误消息fullModel = Model(mainModel.input, lossOut):
attributeError:“张量”对象没有属性“_keras_history”
顺便说一句,我使用的 keras 版本是“2.0.9”。
有人能帮我解决这个问题吗?
多谢!!
我正在使用 Tensorflow 对象检测 API 来检测和定位图像中的一类对象。出于这些目的,我使用预训练的 fast_rcnn_resnet50_coco_2018_01_28 模型。
我想在模型训练后检测欠拟合/过拟合。我看到训练损失,但在评估 Tensorboard 后只显示 mAP 和 Precision 指标,没有损失。
这是否也可以在 Tensorboard 上绘制验证损失?
loss deep-learning tensorflow tensorboard object-detection-api
输入为1.0或0.0。当我尝试用模型和sparse_categorical_crossentropy损失进行预测时,我得到如下信息:
[[0.4846592 0.5153408]]。
我怎么知道它预测什么类别?
我使用Mask-R-CNN来训练我的数据。当我使用TensorBoard查看结果时,我损失了 mrcnn_bbox_loss,mrcnn_class_loss,mrcnn_mask_loss,rpn_bbox_loss,rpn_class_loss以及所有相同的6个损失用于验证:val_loss, val_mrcnn_bbox_loss等。
我想确切地知道每项损失。
我也想知道前6次损失是火车损失还是什么?如果不是火车失窃,我怎么看火车失窃?
我的猜测是:
损失:这是所有5个摘要(但我不知道TensorBoard如何总结它)。
mrcnn_bbox_loss:边框的大小是否正确?
mrcnn_class_loss:该类正确吗?像素正确分配给类别了吗?
mrcnn_mask_loss:实例的形状是否正确?像素正确分配给实例了吗?
rpn_bbox_loss:bbox的大小正确吗?
rpn_class_loss:bbox的类别正确吗?
但是我很确定这是不对的...
如果我只有1个班级,是否会失去一些无关紧要的东西?例如仅背景和另外1个课程?
我的数据只有背景和另外1个类别,这是我在TensorBoard上获得的结果:
我的预测是可以的,但是我不知道为什么最终由于验证而造成的一些损失会不断上升……我认为必须首先下降,然后过度拟合。我使用的预测是TensorBoard上出现次数最多的绿线。我不确定我的网络是否过拟合,因此我想知道为什么验证中的某些损失看起来像它们的样子...
我释放了一个我做的指针,但Valgrind仍然报告我丢失了字节,所以我不确定如何处理它.
有问题的代码是:
listNode* temp = (listNode*)malloc(sizeof(listNode));
node = list->head;
while (node != NULL)
{
temp = node->next;
free(node->entry);
free(node);
node = temp;
}
free(temp);
Run Code Online (Sandbox Code Playgroud)
使用valgrind输出:
16 bytes in 1 blocks are definitely lost in loss record 13 of 21
==2137== at 0xB823: malloc (vg_replace_malloc.c:266)
==2137== by 0x100001B1E: freeList (main.c:110)
==2137== by 0x100001CB5: main (main.c:157)
Run Code Online (Sandbox Code Playgroud) 我在Keras中有小型神经网络。
contextTrain, contextTest, utteranceTrain, utteranceTest = train_test_split(context, utterance, test_size=0.1, random_state=1)
model = Sequential()
model.add(LSTM(input_shape=contextTrain.shape[1:], return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal"))
model.add(LSTM(return_sequences=True, units=300, activation="sigmoid", kernel_initializer="glorot_normal", recurrent_initializer="glorot_normal"))
model.compile(loss="cosine_proximity", optimizer="adam", metrics=["accuracy"])
model.fit(contextTrain, utteranceTrain, epochs=5000, validation_data=(contextTest, utteranceTest), callbacks=[ModelCheckpoint("model{epoch:02d}.h5", monitor='val_acc', save_best_only=True, mode='max')])
Run Code Online (Sandbox Code Playgroud)
上下文和话语是具有例如(100,15,300)形状的numpy数组。第一个LSTM的input_shape应为(15,300)。
我不知道发生了什么,但突然在训练过程中出现了负损失和val_loss。过去通常为正(大约0.18左右)。
训练90个样本,验证10个样本
时代1/5000 90/90 [==============================]-5s 52ms / step-损失:-0.4729- acc:0.0059-val_loss:-0.4405-val_acc:0.0133
时代2/5000 90/90 [==============================]-2s 18ms / step-损失:-0.5091- acc:0.0089-val_loss:-0.4658-val_acc:0.0133
时代3/5000 90/90 [==============================]-2s 18ms / step-损失:-0.5204- acc:0.0170-val_loss:-0.4829-val_acc:0.0200
时代4/5000 90/90 [==============================]-2s 20ms / step-损失:-0.5296- acc:0.0244-val_loss:-0.4949-val_acc:0.0333
时代5/5000 90/90 [==============================]-2s 20ms / step-损失:-0.5370- acc:0.0422-val_loss:-0.5021-val_acc:0.0400
这是什么意思?可能的原因是什么?
谢谢你的回复
我正在我的 CNN(python 2.7.14,tensorflow 1.14.0)中实现一个半正弦损失函数。我正在寻找将度数转换为弧度的 tf 调用。有这样的api吗?在 tensorflow 文档中找不到这个。
我尝试过使用 Tensorflow 和 Pytorch CrossEntropyLoss 但它返回不同的值,我不知道为什么。请找到下面的代码和结果。感谢您的投入和帮助。
import tensorflow as tf
import numpy as np
y_true = [3, 3, 1]
y_pred = [
[0.3377, 0.4867, 0.8842, 0.0854, 0.2147],
[0.4853, 0.0468, 0.6769, 0.5482, 0.1570],
[0.0976, 0.9899, 0.6903, 0.0828, 0.0647]
]
scce3 = tf.keras.losses.SparseCategoricalCrossentropy(reduction=tf.keras.losses.Reduction.AUTO)
loss3 = scce3(y_true, y_pred).numpy()
print(loss3)
Run Code Online (Sandbox Code Playgroud)
上面的结果是:1.69
火炬损失:
from torch import nn
import torch
loss = nn.CrossEntropyLoss()
y_true = torch.Tensor([3, 3, 1]).long()
y_pred = torch.Tensor([
[0.3377, 0.4867, 0.8842, 0.0854, 0.2147],
[0.4853, 0.0468, 0.6769, 0.5482, 0.1570],
[0.0976, 0.9899, 0.6903, 0.0828, 0.0647] …Run Code Online (Sandbox Code Playgroud)