从 pytorch 中的 T/F 值和位串键的映射训练简单的 RNN

问题描述

我想训练能够识别以下内容的 rnn 网络: 我有一个由位串组成的语言 L(可以是长度 n>20),语言中的每个位串都满足语言的模式(目前不相关)。

我创建了一个数据集,它就像一张地图,以位串为键,真/假为值:

001101000010010,False
111001001000000,False
111011101001100,False
011111000101101,False
10000110000110001100,True
011100100001010,False
....

我尝试在 pytorch 中创建 rnn 网络:

class myDataset(T.utils.data.Dataset):

def __init__(self,src_file,m_rows=None):
    tmp_x = np.loadtxt(src_file,max_rows=m_rows,usecols=[0],delimiter=",",skiprows=0,dtype=np.int64)

    tmp_y = np.genfromtxt(src_file,usecols=[1],dtype=bool)

    tmp_y = tmp_y.reshape(-1,1)  # 2-D required

    self.x_data = T.from_numpy(tmp_x).to(device)
    self.y_data = T.from_numpy(tmp_y).to(device)

def __len__(self):
    return len(self.x_data)

def __getitem__(self,idx):
    preds = self.x_data[idx,:]  # or just [idx]
    val = self.y_data[idx,:]
    return (preds,val)  # tuple of two matrices

并训练它:

    net.train()  # set mode
for epoch in range(0,max_epochs):
    T.manual_seed(1 + epoch)  # recovery reproducibility
    epoch_loss = 0  # for one full epoch

    for (batch_idx,batch) in enumerate(train_ldr):
        (X,Y) = batch  # (predictors,targets)
        optimizer.zero_grad()  # prepare gradients
        oupt = net(X)  # predicted prices
        loss_val = loss_func(oupt,Y)  # avg per item in batch
        epoch_loss += loss_val.item()  # accumulate avgs
        loss_val.backward()  # compute gradients
        optimizer.step()  # update wts

但我在加载数据时出错:

溢出错误:Python int 太大,无法转换为 C long

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...