三星手机电池循环清零代码_话不多说、代码拿来:方舟编译器开源的“核爆”威力...

c969d58c-f219-eb11-8da9-e4434bdf6706.jpeg

撰文 | 懂懂   编辑 | 秦言

来源:懂懂笔记

于无声处起惊雷!华为官方8月31日正式将方舟编译器对外开源。

8月31日,华为方舟编译器开源网站上线,开发者可以通过华为云与开源中国代码托管网址获得相关代码和文档,以便参考学习、了解方舟编译器的架构和代码。可以说,对于全球终端用户、开发者以及应用厂商而言,“方舟”开源都有着非凡的意义。

方舟编译器的作用是什么?从华为终端CEO余承东的表述来理解,方舟编译器能改善应用运行效率,从原先的边解释边执行转变为全程机器码高效运行程序。

那么开源的意义又是什么?在懂懂看来,此举既是诚邀广大开发者共同“携手”,也是向应用厂商发出提升手机用户体验的要求,目的很简单——共同打造共赢的生态系统。如果没有开发者和应用厂商的协力,没有整个行业参与者对其持续地重构和优化,一个生态系统很难打造出来,也很难形成庞大的用户群体,更难以形成一个从手机到万物互联全面渗透和覆盖的生态系统。

ca69d58c-f219-eb11-8da9-e4434bdf6706.png No.1 十年磨一剑 方舟开源谋定后动

2009年华为成立编译组,方舟编译器雏形诞生,至今其研发已经走过了十年历程,堪称十年磨一剑。

从华为公布的相关信息来看,方舟编译器并不仅仅是从高级语言到机器码进行了“万能翻译”,而是成为一个编译运行系统。这个编译系统不仅实现了词法分析、语法分析、代码生成等功能,更在IR设计和算法优化方面进行了深入地尝试。

方舟编译器首先解决了Java程序编译的两个难题:JNI调用的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,代码让您的内核崩溃了。在这里,我将提供一些优化代码以减少内存使用和提高代码效率。以下是优化后的代码: ```python import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.layers import Conv2D, AveragePooling2D, Flatten, Dense from tensorflow.keras.models import Sequential from tensorflow.keras.optimizers import SGD from tensorflow.keras.utils import to_categorical import gc # 加载MNIST数据集 (train_x, train_y), (test_x, test_y) = mnist.load_data() # 数据预处理 train_x = train_x.reshape(train_x.shape[0], 28, 28, 1).astype('float32') / 255 test_x = test_x.reshape(test_x.shape[0], 28, 28, 1).astype('float32') / 255 train_y = to_categorical(train_y, 10) test_y = to_categorical(test_y, 10) # 构建LeNet-5模型 model = Sequential() model.add(Conv2D(filters=6, kernel_size=(5, 5), activation='relu', input_shape=(28, 28, 1))) model.add(AveragePooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Conv2D(filters=16, kernel_size=(5, 5), activation='relu')) model.add(AveragePooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Flatten()) model.add(Dense(units=120, activation='relu')) model.add(Dense(units=84, activation='relu')) model.add(Dense(units=10, activation='softmax')) # 编译模型 model.compile(optimizer=SGD(learning_rate=0.1), loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 for epoch in range(20): for i in range(0, train_x.shape[0], 128): batch_x, batch_y = train_x[i:i+128], train_y[i:i+128] model.train_on_batch(batch_x, batch_y) test_loss, test_accuracy = model.evaluate(test_x, test_y) print('Epoch: {}, Test loss: {}, Test accuracy: {}'.format(epoch+1, test_loss, test_accuracy)) gc.collect() # 在测试集上输出精度 test_loss, test_accuracy = model.evaluate(test_x, test_y) print('Test loss: {}, Test accuracy: {}'.format(test_loss, test_accuracy)) ``` 在这个代码中,我们使用 `for` 循环逐批次训练模型,而不是使用 `fit` 函数,这样可以减少内存使用,避免内核崩溃。我们还在每个 epoch 结束后手动进行垃圾回收,以确保内存得到释放。此外,我们还将 `train_on_batch` 函数用于训练,这样可以提高代码效率。 运行优化后的代码后,应该可以避免内核崩溃问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值