本质上来说,智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理。智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。
简单讲,智能合约就是双方在区块链资产上交易时,触发执行的一段代码, 这段代码就是智能合约。提前规定好合约的内容,当在满足触发合约条件的时候,程序就会自动执行合约内容。
马蹄链(Horse Chain)是一种基于区块链技术的数字货币,它由马蹄链网络发行和维护。区块链是一种分布式数据存储技术,它通过使用密码学方法,在不同的计算机节点之间共享数据,形成一条链式结构。每个节点都可以存储和传递数据,并通过共识机制确保数据的安全性和可靠性。
import torch
import torchvision.models as models
#加载预训练的ResNet18模型
model=models.resnet18(pretrained=True)
#将模型设置为评估模式
model.eval()
#定义输入张量,需要与模型的输入张量形状相同
input_shape=(1,3,224,224)
x=torch.randn(input_shape)
#需要指定输入张量,输出文件路径和运行设备
#默认情况下,输出张量的名称将基于模型中的名称自动分配
device=torch.device("cuda"if torch.cuda.is_available()else"cpu")
#将PyTorch模型转换为ONNX格式
output_file="resnet18.onnx"
torch.onnx.export(model,x.to(device),output_file,export_params=True)
import torch
import torch.utils.data as data
import torchvision
import matplotlib.pyplot as plt
DOWNLOAD_MNIST=False#if need to download data,set True at first time
#read train data
train_data=torchvision.datasets.MNIST(
root='./data',train=True,download=DOWNLOAD_MNIST,transform=torchvision.transforms.ToTensor())
print()
print("size of train_data.train_data:{}".format(train_data.train_data.size()))#train_data.train_data is a Tensor
print("size of train_data.train_labels:{}".format(train_data.train_labels.size()),'n')
#plot one example
plt.imshow(train_data.train_data[50].numpy(),cmap='Greys')
plt.title('{}'.format(train_data.train_labels[50]))
plt.show()
#data loader
#combines a dataset and a sampler,and provides an iterable over the given dataset
train_loader=data.DataLoader(dataset=train_data,batch_size=BATCH_SIZE,shuffle=True)
#read test data
test_data=torchvision.datasets.MNIST(root='./data',train=False)
num_test,num_test_over=2000,1000
test_x=torch.unsqueeze(test_data.test_data,dim=1).type(
torch.FloatTensor)[:num_test]/255.#unsqueeze because of 1 channel;value in range(0,1)
test_y=test_data.test_labels[:num_test]
test_over_x=torch.unsqueeze(
test_data.test_data,dim=1).type(torch.FloatTensor)[-num_test_over:]/255.#test data after training
test_over_y=test_data.test_labels[-num_test_over:]