在Matlab中调用tensorflow或keras

python接口路径设置:在Matlab中设置添加可调用的python接口路径及工具

Matlab中命令行查看python版本信息:

>> pyversion

       version: '3.6'
    executable: 'G:\Anaconda3\python.EXE'
       library: 'G:\Anaconda3\python36.dll'
          home: 'G:\Anaconda3'
      isloaded: 0

重新设置为tensorflow或keras库下python:

>> pyversion G:\Anaconda3\envs\keras\python.exe
>> pyversion

       version: '3.6'
    executable: 'G:\Anaconda3\envs\keras\python.exe'
       library: 'G:\Anaconda3\envs\keras\python36.dll'
          home: 'G:\Anaconda3\envs\keras'
      isloaded: 0

Matlab中命令行python运行测试:

>> l1=py.list([1,2,3,4])
l1 = 
  Python list (不带属性)[1.0, 2.0, 3.0, 4.0]

Matlab中命令行导入tensorflow或者keras模块测试:

>> tf = py.importlib.module("tensorflow")

报错:无法解析名称 py.importlib.module
解决:更改函数指令
参考官方文档:Undefined variable “py” or function “py.command”

tf=py.importlib.import_module('tensorflow')

报错:错误使用 h5>init h5py.h5 (line 41) Python 错误 AttributeError: type object 'h5py.h5.H5PYConfig' has no attribute '__reduce_cython__'
解决:降低h5py 2.10.0库的版本到2.8.0:
参考博主文章:一个处女座的程序猿

启动Anaconda Prompt,命令:pip install h5py==2.8.0

报错:PermissionError: [WinError 5] 拒绝访问: 'g:\\anaconda3\\envs\\keras\\lib\\site-packages\\h5py-2.10.0.dist-info'

解决:关闭Anaconda Prompt,右键单击“以管理员身份运行”,成功

Successfully installed h5py-2.8.0

Matlab中再次导入tensorflow或者keras模块测试:

tf=py.importlib.import_module('tensorflow')

tf = 

  Python module - 属性:

                               variable_creator_scope: [1×1 py.function]
                                              VERSION: [1×6 py.str]
                                     COMPILER_VERSION: [1×14 py.str]
                                    space_to_batch_nd: [1×1 py.function]
                                    ..........

Matlab中tensorflow或keras环境测试:

测试代码来源:知乎 slassddd

clc
% import libs
tf = py.importlib.import_module('tensorflow');
np = py.importlib.import_module('numpy');
% set problem
a = tf.Variable(np.float32(0.001), pyargs('dtype',tf.float32));
k1 = tf.placeholder(tf.float32,pyargs('shape',py.None,'name','k1'));
cost = a^2 + k1*a + 5;
% set optimizer
optimizer = tf.train.RMSPropOptimizer(pyargs('learning_rate',0.1)).minimize(cost);
init = tf.global_variables_initializer();
% solve
try
    sess = tf.Session();
    sess.run(init);
    dict = py.dict(pyargs(k1.name,np.array([4])));
    idxr = [];
    costr = [];
    for i = 1:20
        sess.run(optimizer,pyargs('feed_dict',dict));
        a_val = sess.run(a,pyargs('feed_dict',dict));
        cost_val = sess.run(cost,pyargs('feed_dict',dict));
        % 显示信息
        msgstr = ['迭代%d次:变量a=%f,cost=%f\n'];
        fprintf(msgstr,i,a_val,cost_val);
        idxr = [idxr i];
        costr = [costr double(cost_val)];
    end
    sess.close()
catch
    sess.close()
end
% plot
plot(idxr,costr)

环境测试结果:

在这里插入图片描述

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值