如果我Softmax Activation
像这样设置最后一层,我正在用unet进行图像语义分割工作:
...
conv9 = Conv2D(n_classes, (3,3), padding = 'same')(conv9)
conv10 = (Activation('softmax'))(conv9)
model = Model(inputs, conv10)
return model
...
Run Code Online (Sandbox Code Playgroud)
然后使用即使只有一个训练图像loss = tf.keras.losses.CategoricalCrossentropy(from_logits=False)
,训练也不会收敛。
但是,如果我没有Softmax Activation
像这样设置最后一层:
...
conv9 = Conv2D(n_classes, (3,3), padding = 'same')(conv9)
model = Model(inputs, conv9)
return model
...
Run Code Online (Sandbox Code Playgroud)
然后使用loss = tf.keras.losses.CategoricalCrossentropy(from_logits=True)
训练将收敛为一个训练图像。
我的groundtruth数据集是这样生成的:
X = []
Y = []
im = cv2.imread(impath)
X.append(im)
seg_labels = np.zeros((height, width, n_classes))
for spath in segpaths:
mask = cv2.imread(spath, 0)
seg_labels[:, …
Run Code Online (Sandbox Code Playgroud) 我在交叉验证中有一个类似的开放问题(尽管不是针对实现的,我希望这个问题能够解决,所以我认为它们都是有效的)。
我正在一个使用传感器监视人员GPS位置的项目。然后,坐标将转换为简单网格表示。我想尝试做的是记录用户的路线后,训练神经网络来预测下一个坐标,即采取下面的示例,其中用户重复只有两个随着时间的推移路线,首页- >一个和首页- >乙。
我想用不同长度的序列训练RNN / LSTM,例如(14,3), (13,3), (12,3), (11,3), (10,3), (9,3), (8,3), (7,3), (6,3), (5,3), (4,3), (3,3), (2,3), (1,3)
,然后我还想用不同长度的序列进行预测,例如对于这个示例路线
route = [(14,3), (13,3), (12,3), (11,3), (10,3)] //pseudocode
pred = model.predict(route)
Run Code Online (Sandbox Code Playgroud)
pred
应该给我(9,3)
(或者最好是更长的预测,例如((9,3), (8,3), (7,3), (6,3), (5,3), (4,3), (3,3), (2,3), (1,3)
)
如何将此类训练序列提供给下面标识的init
和forward
操作?
self.rnn = nn.RNN(input_size, hidden_dim, n_layers, batch_first=True)
out, hidden = self.rnn(x, hidden)
Run Code Online (Sandbox Code Playgroud)
另外,整个路径应该是张量,还是路径内的每个坐标集都应该是张量?
machine-learning deep-learning lstm recurrent-neural-network pytorch
我在这里掌握了 pytorch,并决定实现非常简单的 1 对 1 线性回归,从身高到体重。
获得数据集: https: //www.kaggle.com/datasets/mustafaali96/weight-height,但任何其他数据集都可以。
让我们导入有关女性的库和信息:
import torch
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('weight-height.csv',sep=',')
#https://www.kaggle.com/datasets/mustafaali96/weight-height
height_f=df[df['Gender']=='Female']['Height'].to_numpy()
weight_f=df[df['Gender']=='Female']['Weight'].to_numpy()
plt.scatter(height_f, weight_f, c ="red",alpha=0.1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。
让我们制作数据加载器:
class Data(Dataset):
def __init__(self, X: np.ndarray, y: np.ndarray) -> None:
# need to convert float64 to float32 else
# will get the following error
# RuntimeError: expected scalar type Double but found Float …
Run Code Online (Sandbox Code Playgroud)