📜  毫升 |使用 Keras 进行字加密

📅  最后修改于: 2022-05-13 01:55:27.933000             🧑  作者: Mango

毫升 |使用 Keras 进行字加密

机器学习是当今科技市场上最受欢迎的领域之一。学习如何教你的系统自己做一些特定的事情是非常有趣的。今天,我们将借助 Tensorflow 和 Numpy 等库,在发现机器学习方面迈出一小步。我们将创建一个具有一个神经元的神经结构,其生命中的唯一目的是通过遵循特定模式将我们输入的字符更改为其他字符,我们将其示例存储在机器将学习的样本数据中。

使用的库:

  • TensorFlow:从这里学习安装 TensorFlow
  • NumPy:从这里学习安装 numpy

    代码:导入库

    # importing libraries
    import tensorflow as tf
    import numpy as np 
    from tensorflow import keras
    

    我们还将使用 Keras,它是用Python编写的神经网络库,并预添加在 Tensorflow 库中。

    模型的工作:
    给定示例的目的是从用户那里获取输入代码,然后对其进行加密,以便在不知道其密钥的情况下没有人能够理解它。在这里,我们将逐个字符地查看消息并将字符替换为具有字符值 1 + 给定字符的 ASCII 值的字符。但首先,我们将创建一个神经结构来为我们做这样的工作。我们将这里称为模型并使用 Keras 定义它。这里keras.Sequential定义我们的模型将是顺序的,或者模型是层的线性堆叠,然后我们将定义层的类型(我们将使用密集连接的神经网络(NN)层)以及我们的层数或单元数想。最后,我们将给出我们想要的神经元数量作为 input_shape,并使用优化器和损失来编译模型。优化器和损失是帮助我们的模型朝着正确方向工作的两个函数。损失将计算我们的模型做出的预测的误差,优化器将检查该误差并将模型向误差减少的方向移动。

    代码:创建顺序模型

    # creating the simplest neural structure with only 
    # one layer and that only have one neuron
    model = keras.Sequential([keras.layers.Dense(units = 1, 
                                                 input_shape =[1])])
      
    # compiling model with optimizer to make predictions and 
    # loss to keep checking the accuracy of the predictions
    model.compile(optimizer ='sgd', loss ='mean_squared_error')
    

    在此之后,我们将我们的训练数据指定为 Numpy 数组,它将 x 的所有值连接到相应的 y,然后我们将使用model.fit在给定数据上训练我们的模型。在这里,Epochs 将指定我们的模型在训练数据上工作的次数,以使用损失和优化器提高其准确性。


    代码 :

    # here we will give sample data with which program 
    # will learn and make predictions on its basis
    xs = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 
                  dtype = float)
    ys = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 
                  dtype = float)
      
    # we will fit the data in the model and the epochs
    # is the number of times model will run sample data to
    # increase its accuracy
    model.fit(xs, ys, epochs = 1000)
    

    最后,我们将从用户那里获取输入,并使用元组函数将其分解为字符,然后将所有这些字符保存到一个列表中。现在我们将创建一个 for 循环,并在我们的模型中一次发送一个字符以进行预测,并将打印所有预测,以便它们一起形成一个加密消息,在您知道密钥之前不容易理解它。

    代码 :

    # taking input from user
    code = input("code is: ")
    n = len(code)
      
    # dividing the input message into its characters
    c = tuple(code)
    d = list(c)
      
    # predicting the output for each character and printing it
    for i in range(0, n):
        s = ord(d[i]) 
        x = model.predict([s])
        print(chr(x), end ="")
      
    

    完全实施——

    # importing libraries 
    import tensorflow as tf
    import numpy as np 
    from tensorflow import keras
      
    # creating the simplest neural structure 
    # with only one layer and that only have one neuron
    model = keras.Sequential([keras.layers.Dense(units = 1, 
                                                 input_shape =[1])])
    # compiling model with optimizer to make predictions and 
    # loss to keep checking the accuracy of the predictions
    model.compile(optimizer ='sgd', loss ='mean_squared_error')
      
    # here we will give sample data with which program will learn 
    # and make predictions on its basis
    xs = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype = float)
    ys = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], dtype = float)
      
    # we will fit the data in the model and the epochs is number of
    # times model will run sample data to increase its accuracy
    model.fit(xs, ys, epochs = 1000)
      
    # taking input from user
    code = "Vaibhav Mehra writing for GeeksforGeeks"
    n = len(code)
      
    # dividing the input message into its characters
    c = tuple(code)
    d = list(c)
      
    # predicting the output for each character and printing it
    for i in range(0, n):
        s = ord(d[i]) 
        x = model.predict([s])
        print(chr(x), end ="")
    

    输出 :

    Wbjcibw!Nfisb!xsjujoh!gps!HffltgpsHfflt